2010-06-15 81 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