有没有办法从关联中急切加载named_scope?
我有我的文章模型:
class Article < ActiveRecord::Base
has_many :comments
end
Run Code Online (Sandbox Code Playgroud)
和我的评论模型:
class Comment < ActiveRecord::Base
belongs_to :article
named_scope :approved, :conditions => { :approved => true }
named_scope :unapproved, :conditions => { :approved => false }
end
Run Code Online (Sandbox Code Playgroud)
我可以急切地加载文章的所有评论:
@article = Article.find(params[:id], :include => :comments)
Run Code Online (Sandbox Code Playgroud)
我怎样才能这样做,但仅限于批准的评论?
目前它还没有内置到 Rails 中,但 Ryan Daigle 创建了一个名为 utility_scopes 的插件,它添加了一个 with() 范围,因此您可以执行以下操作:
Article.approved.with(:comments)
Run Code Online (Sandbox Code Playgroud)
博客文章:http://ryandaigle.com/articles/2008/8/20/named-scope-it-s-not-just-for-conditions-ya-know Github 存储库:http://github.com/yfactorial /utility_scopes
[根据评论更新]
我的错。我读得不够好。我不认为有任何东西可以让你像这样调用一个名为_scope 的关联。我能想到的最接近的事情是在文章上创建一个named_scope:
class Article < ActiveRecord::Base
named_scope :with_approved_comments, {:include => :comments, :conditions => ['comments.approved = ?', true]}
end
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
1733 次 |
| 最近记录: |