我有关系,就像用户有很多文章和文章属于用户 因此,要查找用户的文章(有效),我已在文章模型中添加了named_scope
named_scope :active_articles, :conditions => "active = true"
什么时候做 -
user.articles.active_articles
它按预期正确提供,但在控制台查询上有重复条件 -
SELECT * FROM `articles` WHERE (`articles`.user_id = 52) AND ((active = true) AND (`articles`.user_id = 52))
如何限制重复条件?
或
如何为关联添加条件?
我正在使用rails 2.3.5.Thanks提前。
答案 0 :(得分:0)
我不确定,但我认为重复的原因是因为第一部分
“user.articles将生成WHERE(articles
。user_id = 52)”
和第二部分
“articles.active_articles将生成AND((active = true)AND(articles
。user_id = 52))”
所以当你同时调用部分user.articles.active_articles时
它将生成(articles
。user_id = 52)AND((active = true)AND(articles
。user_id = 52))
你能打电话给article.active_articles吗?并发布结果?
答案 1 :(得分:0)
您可以在用户模型中添加以下has_many关联:
has_many :active_articles, :conditions => {:active => true }, :class_name => "Article"
然后直接通过user.active_articles访问活动文章。
我知道它在Article模型上不如named_scope好,但它确实消除了由ActiveRecord生成的SQL查询中的条件重复