我想从以下关联中删除项目(site_placement具有native_ad_placement.ad_type ==“ video”),并具有以下代码,但这似乎不起作用
# not an array but an association
@sites.each do |site|
site.site_placements.reject { |sp| (sp.native_ad_placement.ad_type == "video") }
end
我该如何实现?我正在使用Rails 3.2。
答案 0 :(得分:2)
您应该使用.reject!
而不是.reject
。
但实际上,您根本不应该使用拒绝。如果我没有记错的话,您可以在查询级别完全实现相同的目的,并且效率更高。如下所示:
Site.includes(site_placements: [: native_ad_placement]).where.not(native_ad_placements: { ad_type: "video" })