繁体   English   中英

积极与动态条件关联的建议

[英]Suggestion for eager loading associations with dynamic conditions

Rails 3.1。 目前,我有一个协会,该协会的动态状况取决于国家/地区。

class Article
  has_many :comments, :conditions => Proc.new { { :country => Comment.country } } 
end

Comment.country = "US"

# Eager loads comments from the US
Article.includes(:comments).all 

如您所见,我正在设置一个类属性标志Comment.country来告诉Article急于加载它们所需的Article的国家。 它可以工作,但是我担心竞争状况,因为Comment.country东西会在所有用户会话中共享。 有人可以推荐我一个更好的方法吗?

更新 :更具体地说,我想急于加载我的关联,以使我的SQL查询最少。 此外,当做类似的事情时

@article.comments

它将根据条件提取早已加载的注释。 我不想做类似的事情

@article.comments.where(:country => "US")

因为不仅是更多的SQL查询,所以调用@article.comments 不会引用相同的注释集合。

您需要进行相关思考,您希望sql看起来像什么? 您是否只是在尝试减少加载国家代码的查询数量?

另外,请记住,根据从数据库返回的数据量,延迟加载有时可能与渴望加载一样快。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM