1

スコープを使用しているときにRailsアプリでメソッドエラーが発生しない原因は何ですか?

猫と犬がいる基本的なユーザークラスがあります。クエリを組み合わせて、作成日で並べ替える必要があります。最終的に、個々のクエリはより複雑になります。

    class User < ActiveRecord::Base
        has_many :dogs
        has_many :cats

       scope :pets, joins(:dogs).joins(:cats).order("created_at desc")

ビューで

    <%= render @user.pets%>

メソッドなしのエラーが発生しています

    undefined method `pets' for #<User:0x00000106370cb0>
4

1 に答える 1

1

スコープは、ActiveRecordモデルのクラスメソッドのみを定義します。これを呼び出す適切な方法は、ユーザーモデルで直接行うことです。User.petsUserのインスタンスとは対照的@user.petsです。

できることは、Userインスタンスで呼び出されるメソッドを作成することです。

   def pets
     User.joins(:dogs).joins(:cats).order("created_at desc")
   end

したがって、@user.pets許可されます。

于 2012-05-10T06:05:37.873 に答える