Platform和PlatformCategory连接为belongs_to has_many
我对我的数据库有这样的查询
p = PlatformCategory.where(params[:platform_category_ids]).includes(:platforms)
我想使用与p变量相关联的每个平台ID并将其放入新对象中,如下所示:
p.each { |plat_cat| Campaign.create(..., some_id: plat_cat.platform.id) }
但是PlatformCategory has_many平台,在这里我想在plat.cat上调用每个块,但它听起来不像Ruby方式。
UPD 当我传递像[1,2,3,4]这样的数组时一切正常,但是在params中使用数组我得到' NoMethodError:undefined method`joins'对于Array'
答案 0 :(得分:0)
你在找这个吗?:
p = PlatformCategory.where(id: [1,2,3,4]).joins(:platforms).select('platforms.id)
然后:
p.each { |plat_cat| Campaign.create(..., some_id: plat_cat.id) }
UPDATE :由于find
不会链接joins
方法,因为它会在查询后返回一个数组(如果您将数组作为参数传递)。您可以这样做以避免这种情况:
p = PlatformCategory.joins(:platforms).select('platforms.id').find([1,2,3,4])