【问题标题】:Activerecord: Finding non associated plus associated records with a single queryActiverecord:通过单个查询查找非关联和关联记录
【发布时间】:2009-03-29 02:48:28
【问题描述】:

给定以下场景,使用 activerecord:

用户所属事件

我想查找所有没有名为“party”的事件的用户。

所以我尝试了以下方法:

User.all(:joins => :event, :conditions => ["events.name != ?", "party"])

但是,这只会返回那些确实有活动的用户,而不是“派对”活动。它不会返回所有没有事件的用户,因为 :joins 会自动将结果限制为仅关联记录。

我可以执行两个查询并将结果相加,但是有没有办法在一个查询中获取非关联记录以及与条件匹配的关联记录?

【问题讨论】:

    标签: ruby-on-rails ruby activerecord


    【解决方案1】:

    这个怎么样?

    User.all(
      :include => :event, 
      :conditions => ["users.event_id IS NULL OR events.name != ?", "party"])
    

    【讨论】:

    • 谢谢,莎拉。我尝试了相同的条件,但是使用了 :joins,但它不起作用。我觉得自己像个白痴,我没想过使用 :include 代替。我生活和学习:-)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-03
    • 1970-01-01
    • 2016-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多