scopeを試しているのですが、エラーになるので、原因を教えて下さい。
・発生しているエラー
ドットインストールでActiceRecordを勉強しています。
http://dotinstall.com/lessons/basic_activerecord/23507
この中で、以下の内容があります。
class Post < ActiveRecord::Base scope :top3, order("created_at").limit(3) end p Post.top3
実行すると、エラーになります。
/home/vagrant/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/scoping/named.rb:143:in `scope': The scope body needs to be callable. (ArgumentError) from main.rb:9:in `<class:Post>' from main.rb:8:in `<main>'
・調べたこと
エラー内容でググると、以下ありました。
http://stackoverflow.com/questions/28951671/argument-error-the-scope-body-needs-to-be-callable
構文がどうやら違うようでした。
ので、以下に変更しました。
class Post < ActiveRecord::Base scope :top3, -> {order("created_at").limit(3)} end p Post.top3
すると、実行できました。
・質問内容
ドットインストール内では、最初の書き方で実行できているのですが、自分の開発環境では、変更後の構文でしか実行できません。scopeの書き方をググると、後半の書き方の例が出てくるのですが、前半の書き方でも実行できるようにするには、どうすればよいでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/09/21 02:17