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
国家/地区需要在急切加载它们时需要的文章。它有效,但我担心竞争条件,因为Comment.country
之类的内容将在所有用户会话中共享。有人可以建议我更好的方法吗?
更新: 更具体地说,我希望加载我的关联以使我的SQL查询保持在最低限度。此外,在做类似
的事情时@article.comments
它将根据条件提取已经急切加载的评论。我不想做像
这样的事情@article.comments.where(:country => "US")
因为不仅是SQL查询更多,调用@article.comments
指的是同一个评论集合。
答案 0 :(得分:0)
你需要以关系的方式思考,你希望你的sql看起来像什么?您是否只是想减少加载国家/地区代码的查询数量?
另外,请记住,延迟加载有时可能与加载时一样快,具体取决于从数据库返回的数据量。