与named_scope重复条件的活动记录关联

时间:2012-07-04 07:34:12

标签: ruby-on-rails activerecord named-scope

我有关系,就像用户有很多文章和文章属于用户 因此,要查找用户的文章(有效),我已在文章模型中添加了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提前。

2 个答案:

答案 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查询中的条件重复