[Ruby on Rails] view で現在のコントロール名、アクション名を取得する方法
- 2013 2/17
Ruby on Rails で、view で現在のコントロール名、アクション名を取得する方法をメモ。
controller.controller_name controller.action_name |
Ruby on Rails で、view で現在のコントロール名、アクション名を取得する方法をメモ。
controller.controller_name controller.action_name |
Ruby on Rails で、validates numericality で nil の場合、チェックしないようにするには allow_nil: true を指定すればOKです。
class Article < ActiveRecord::Base validates :page_view, numericality: true, allow_nil: true end |
allow_nil: true を指定しない場合は、未入力でも「xxx は数字で入力してください。」というバリデーションエラーになってしまいます。
・[参考]:validation – custom error message for valid numericality of in rails – Stack Overflow
Ruby on Rails の .build や build_xxx についてメモ。
build メソッドはググれば見つかるけど、「build_xxx って何だ?」と思って調べてみました。
build_xxx は has_one でアソシエーションが定義されている場合に使える構文らしく、
tag = @article.tag.build |
と書くのを、
tag = @article.build_tag |
という風に書くこともできるみたいです。
ちなみに build は、親モデルに対する外部参照キーを自動でセットしてくれる点が new メソッドと違って便利!
詳しくはこの辺を読む。
・build (ActiveRecord::Relation) – APIdock
・Ruby on Rails 備忘録 – Ride On Rails » Blog Archive » ActiveRecord の new と build の違い
Ruby on Rails で、複雑な検索フォームを簡単に作成することができる「Ransack」というGemが便利なのでメモ。
Ruby on Rails 3.2 から追加された新機能 pluck メソッドが便利です。
・pluck (ActiveRecord::Calculations) – APIdock
こんな風に map で単一カラムの配列を作っていたのを、
blog_titles = Blog.all.map(&:title) |
pluck メソッドを使えば、こんな感じに書ける。
blog_titles = Blog.pluck(:title) |
しかも、パフォーマンスが良いということで、pluck を使わないわけにはいかない。
・Rails3.2から導入されたpluckメソッドのパフォーマンスが素晴らしい件 – (゚∀゚)o彡 sasata299’s blog
_人人人人人人人人人_
> pluck ステキ! <
 ̄Y^Y^Y^Y^Y^Y^Y^Y ̄
Ruby on Rails で seed_fu のファイルを開発環境毎に分けてみました。
% ls -l db total 64 drwxr-xr-x 11 shigeoka staff 374 1 29 20:10 fixtures/ drwxr-xr-x 3 shigeoka staff 102 12 27 18:16 fixtures_development/ drwxr-xr-x 3 shigeoka staff 102 1 30 18:07 fixtures_production/ drwxr-xr-x 3 shigeoka staff 102 1 30 18:06 fixtures_staging/ drwxr-xr-x 76 shigeoka staff 2584 1 29 20:10 migrate/ -rw-r--r-- 1 shigeoka staff 18269 1 29 20:10 schema.rb -rw-r--r-- 1 shigeoka staff 343 12 4 23:32 seeds.rb |
どの環境でも共通のデータは、普通に fixtures ディレクトリ以下に設置しています。
その他は、development, staging などでインポートしたいデータが微妙に違ってくるので、suffix に環境名を付けたディレクトリを作って分けました。
それぞれの環境のseedデータをインポートするには下記のように FIXTURE_PATH を指定してあげます。
% rake db:seed_fu FIXTURE_PATH=db/fixtures_development |
そんでもって、development, stagingで共通のファイルは require で読み込むようにしています。
# db/fixtures_development/users.rb require "#{Rails.root}/db/fixtures_staging/groups.rb" |
こんな感じです。
Ruby on Rails で、CSVのインポート/エクスポート機能を実装する上での参考情報をご紹介します。
Ruby 1.9 は FasterCSV が標準の CSV クラスとして採用されているので、require “csv” すればすぐに使える。
・Ruby on Rails Screencasts – RailsCasts
CSVインポート
・#396 Importing CSV and Excel – RailsCasts
roo というスプレッドシート(Open Office, Excel, Google Spreadsheetsなど)を操作する gem を使っている。
・roo:スプレッドシートを操るRubyライブラリ « TORQUES LABS
CSVエクスポート
・#362 Exporting CSV and Excel – RailsCasts
・Ruby1.9とRailsでCSV出力(SJIS) #Rails #Ruby – Qiita
・[rails] csvつくって出力するのよメモ | おれせか
CSVファイルはExcelから作成されることが多くて、文字コードをShift_JISからUTF-8へ変換して扱う必要があります。
その辺のノウハウがまとめられています。
・CSV を文字コード変換しつつロード #Ruby – Qiita
普通はテストで使う fixture_file_upload メソッドで CSV ファイルをアップロードしてから、モデルに追加したクラスメソッド import を呼び出してやります。
> include ActionDispatch::TestProcess > file = fixture_file_upload "tmp/test.csv", "text/comma-separated-values" => #<Rack::Test::UploadedFile:0x007fa36b03f960 @content_type="text/comma-separated-values", @original_filename="test.csv", @tempfile=#<File:/var/folders/46/bg9j7wkn5qg9n895016mlvk00000gn/T/test.csv20130124-12060-h3mn08>> > Product.import(file) (0.2ms) BEGIN ["a", "b", "c", "d"] ["1", "2", "3", "4"] (0.1ms) COMMIT => <#CSV io_type:File io_path:"/var/folders/46/bg9j7wkn5qg9n895016mlvk00000gn/T/test.csv20130124-12060-h3mn08" encoding:UTF-8 lineno:2 col_sep:"," row_sep:"\r" quote_char:"\""> |
Ruby on Rails で before_filter に条件を設定するための参考サイトをメモ。
Ruby on Rails で、ある条件の時だけバリデーションを掛けたいときは with_options を使えばグルーピングできて素敵です。
・Ruby on Rails Guides: Active Record Validations and Callbacks
・paramがなければModelのValidationをskipすれば良いじゃない #Ruby #Rails – Qiita
5.4 Grouping conditional validations
Sometimes it is useful to have multiple validations use one condition, it can be easily achieved using with_options.
class User < ActiveRecord::Base with_options :if => :is_admin? do |admin| admin.validates :password, :length => { :minimum => 10 } admin.validates :email, :presence => true end endAll validations inside of with_options block will have automatically passed the condition :if => :is_admin?
Ruby on Rails の form_for や form helper で調べることが多い項目を自分用にまとめ。
■ f.select
id の指定の仕方でハマったときに読む。
・そろそろRailsのselectメソッドについて一言いっとくか – (゚∀゚)o彡 sasata299’s blog
・formのselectタグにidを設定する – 中国でRuby on Rails
select(object, method, choices, options = {}, html_options = {}) |
色々と随時更新していく予定です。