【问题标题】:Querying AR with a list of possible values使用可能值列表查询 AR
【发布时间】:2014-08-26 12:07:08
【问题描述】:

我想用where 查询Model,其中某些列组合出现在可能性列表中

具体来说,该模型具有d_typed_id 的多态关联

d_type 可以是'Gal''Bar'

所以在此之前,我会做一些逻辑来获取我想查询 Model 表的每个类的可能 ID

有没有办法做到这一点

Model.where("d_type = 'Gal' AND d_id = :g OR d_type = 'Bar' AND d_id = :b", g: g_ids, b: b_ids)

【问题讨论】:

    标签: sql activerecord ruby-on-rails-4 arel


    【解决方案1】:

    我不知道是否有更好的方法,但这里有一些东西可以玩:

    combined_conditions = [[1,'a'],[2,'b'],[3,'c']].inject(nil){|mem,(v1,v2)|
      condition = Arel::Nodes::Grouping.new(
        Foo.arel_table[:baz].eq(v1).and(Foo.arel_table[:bar].eq(v2))
      )
      mem = mem ? Arel::Nodes::InfixOperation.new('OR', mem, condition) : condition
    };
    
    puts Foo.where(combined_conditions).to_sql
    

    给予:

    SELECT "foos".* FROM "foos" WHERE (("foos"."baz" = 1 AND "foos"."bar" = 'a') OR ("foos"."baz" = 2 AND "foos"."bar" = 'b') OR ("foos"."baz" = 3 AND "foos"."bar" = 'c'))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-28
      • 2020-12-07
      • 2018-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多