2010-11-23 4 views
1

ここで間違っていることはわかりませんが、私が持っているモデルのスコープを作成したいのですが、関連するモデルの数を評価したいと思っています。Rails、スコープのトラブル

class Thing < ActiveRecord::Base 
    has_many :photos 
    scope :with_images, self.photo.count > 0 
end 

class Photo < ActiveRecord::Base 
    belongs_to :thing 
end 

私はその後、私は写真にNoMethodErrorを取得

Thing.where('some conditions').with_images 

のように働くだろうスコープを持って、なぜこれが関係として利用できないでしょうでしょうか?私は方法としてそれを使用したくありません。

答えて

2

をここで起こって二つのものがあります。まず、写真ではなく写真を呼び出そうとしています。

しかし、実行時にselfはThingのインスタンスではなく定数Thingを参照するため、エラーが発生します。 has_many :photos宣言は、Thingのインスタンスに対してメソッドphotosを定義します。したがって、Thing(定数)にはphotosというメソッドはありません。

TL;それは写真だけ

scope :with_images, :joins => :photos 
を持つレコードを検索しますので、drはちょうど :joins引数を使用
1

それは次のようになります。

self.photos.count > 0 

たり、カウンターキャッシュ使用している場合:

self.photos_count > 0