Ruby on rails 合并两个活动记录关联rails
我们正在RubyonRails中实现过滤器,过滤器可以与和/或条件结合使用 实现或在过滤条件之间 Filter 1或Filter 1或Filter 3=我们使用rails或method()通过将两个活动记录关系与OR组合来实现这一点 例如:过滤条件为Ruby on rails 合并两个活动记录关联rails,ruby-on-rails,activerecord,filter,ruby-on-rails-5,Ruby On Rails,Activerecord,Filter,Ruby On Rails 5,我们正在RubyonRails中实现过滤器,过滤器可以与和/或条件结合使用 实现或在过滤条件之间 Filter 1或Filter 1或Filter 3=我们使用rails或method()通过将两个活动记录关系与OR组合来实现这一点 例如:过滤条件为 id为1或id为2 为此, Person.where(id:1)或(Person.where(id:2) 生成的查询将是,从“people”中选择“people”。*其中(“people”。“id”=$1或“people”。“id”=$2)[[“i
id为1或id为2
为此,
Person.where(id:1)或(Person.where(id:2)
生成的查询将是,从“people”中选择“people”。*其中(“people”。“id”=$1或“people”。“id”=$2)[[“id”,1],“id”,2]]
实现过滤条件和过滤条件之间的差异
我们面临的主要问题是将过滤器与条件相结合
id为1,id为2
我们尝试使用该方法,但使用该方法时,相同的条件将被最近的条件覆盖。也发现了此问题
注意:我提供的示例看起来可能很简单,但是过滤器逻辑非常复杂,所以我们不能只是在那里链接rails范围
((id为1或id为2)和(id为10或id为20))
这是一个简单的过滤器的外观。可以添加更多的复杂性。我们的过滤器的外观如下
我们要做的是将所有内部块与OR组合,并将所有外部块与and组合。如果过滤条件为and,并且要在同一列中查询该列,有人能提出更好的方法吗
提前谢谢
我们还想得到where条件并进行字符串连接。但希望这是最坏的情况。要实现过滤条件之间的
或和和可以简单地使用.Arel表使comlex查询更简单、更容易
另一种方法,你仍然可以使用。我认为这是你在ransack
中想要的,我们在JSON列中进行筛选,我们需要在那里进行转换和查询。因此我们不能使用ransack。我想我会混淆你的问题。你想像ransack演示应用程序一样进行筛选吗?如果你想像ransack一样进行筛选,请像ransack一样进行筛选ransack,2篇博文:,都是很好的参考资料,可以使过滤器像ransack一样,即使你在JSON列中进行过滤。你对ransack的真正问题是什么,你能说清楚吗?
Person.where(id:1).merge(Person.where(id:2))
# The first condition is overridden by second, if the same condition is on the same column.
Person Load (0.7ms) SELECT "people".* FROM "people" WHERE "people"."id" = $1 [["id", 2]]