Rails 2.3:在另一个named_scope中使用另一个名为named_scope的模型

时间:2010-06-15 13:59:14

标签: ruby-on-rails

假设我有两个这样的模型:

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命名范围逻辑,但我不想让“comments.text像'%x%')”分散在我的代码中。

我希望这是有道理的:)

谢谢

1 个答案:

答案 0 :(得分:1)

你只需要使用

@user.comments.about_x

我个人认为named_scope模型上不需要user

但您可以添加一种方法:

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

并使用

@user.comments_about_x