gpt4 book ai didi

ruby-on-rails - Rails 3.0 在每个循环中有 "or"语句

转载 作者:数据小太阳 更新时间:2023-10-29 07:38:14 24 4
gpt4 key购买 nike

我正在尝试构建一个比较两个对象的查询,如果它们具有相同的 id,则不会获取记录。我所拥有的是:

@channels.each do |channel|
unless @guide_channels.where(:id => channel.id).exists?
@dropdown_channels = @dropdown_channels.where(:id => channel.id)
end
end

这会创建查询,但会在每个值之间放置一个 AND,这不是我想要的。我想要“或”运算符。是否有我可以使用的“orwhere”功能,或者是否有更好的方法来使用某些比较功能?

最佳答案

重点是 AR::Relation 对象的 .where() 方法将条件添加到一组条件中,然后 AND-在执行查询时一起编辑。

你要做的是像NOT IN这样的查询:

# select all the ids for related @guide_channels
# if @channels comes from a query (so it's a ActiveRecord::Relation):
guide_ids = @guide_channels.where(:id => @channels.pluck(:id)).pluck(:id)
# use .where(:id => @channels.map {|c| c.id}) instead if @channels is just an array

# then use the list to exclude results from the following.
@dropdown_channels = @dropdown_channels.where("id NOT IN (?)", guide_ids.to_a)

第一个查询将累积在 @guide_channels 中具有条目的 channel 的所有 ID。第二个将使用第一个的结果从下拉列表的结果中排除找到的 channel 。

关于ruby-on-rails - Rails 3.0 在每个循环中有 "or"语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13158715/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com