[英]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.