【问题标题】:Rails : Filter a model by 2nd childs attributeRails:按第二个子属性过滤模型
【发布时间】:2012-11-16 20:16:55
【问题描述】:

我似乎无法弄清楚这一点。如果它深入一层,我可以做到。 (使用 A.joins(:bs).where("bs.paid = TRUE") 之类的东西)

但我有一个模型 A,它是 has_many BB has_one C。最后C 有一个属性paid

我想获取所有AC.paid == true

我正在寻找类似A.joins({:b, :c}).where("c.paid == True")的东西

【问题讨论】:

    标签: sql ruby-on-rails arel


    【解决方案1】:

    这样的?

    A.joins(:b, :c).where(:conditions => ["c.paid = ?", true])
    

    在这里找到,看看你可能会感兴趣: "11.2.2 加入多个关联" http://guides.rubyonrails.org/active_record_querying.html

    【讨论】:

    • 知道了。我正在寻找 11.2.3
    【解决方案2】:
    paid_items = Array.new
    
    A.bs.each do |b_item|
      paid_items << b_item if b_item.c.paid
    end
    

    【讨论】:

    • 可读性对我来说非常重要。 A.bsb_item.c 正在使用 ActiveRecord。这种方式更具可读性。
    • 我目前使用的解决方案与您的完全相似。但我认为使用 Arel 可以轻松完成。
    猜你喜欢
    • 2017-09-05
    • 1970-01-01
    • 2023-04-04
    • 2019-08-23
    • 2017-05-05
    • 1970-01-01
    • 1970-01-01
    • 2011-07-06
    • 1970-01-01
    相关资源
    最近更新 更多