2010-06-15 74 views
0

比方說,我有兩個型號,像這樣:Rails的2.3:使用其他named_scope內的另一個模型named_scope

class Comment < ActiveRecord::Base 
    belongs_to :user 
    named_scope :about_x :conditions => "comments.text like '%x%')" 
end 

class User < ActiveRecord::Base 
    has_many :comments 
end 

我如何能named_scope添加到用戶模型,像這樣

class User < ActiveRecord::Base 
    has_many :comments 
    named_scope :comments_about_x, :includes => :comments, :comments_named_scope => :about_x 
end 

這允許我要做

all_user_comments_about_x = User.comments_about_x 

推理是我經常需要使用評論模型about_x命名作用域邏輯,但我不希望擁有像'%x%'這樣的comments.text)「分散在我的代碼中。

我希望這是有意義的:)

謝謝

回答

1

你只需要使用

@user.comments.about_x 

我個人認爲沒有必要爲named_scopeuser S模式。

但您可以添加替代方法:

class User < ActiveRecord::Base 
    def comments_about_x 
     self.comments.about_x 
    end 
end 

,並使用

@user.comments_about_x