将多个ActiveRecord子数组连接成一个?

时间:2015-09-03 20:19:36

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

我有两种模式:

class Location < ActiveRecord::Base
    has_many :products
end

class Product < ActiveRecord::Base
    belongs_to :location
end

我按照以下方式查找位置:

locations = Locations.find_by(city: "Orlando")

是否有可能将所有产品连接到一个阵列中,同时清除所有重复的product_id(并且不必担心它最初属于哪个位置)?

1 个答案:

答案 0 :(得分:0)

在您的代码中,您只返回一个位置。你的意思是Location.where(city: "Orlando")吗?假设你这样做我会考虑这样做:

location_ids = Location.where(city: "Orlando").pluck(:id)
products = Product.where(location_id: location_ids)

你也可以使用连接来实现:

products = Product.joins(:location).where(location: {city: "Orlando"})

或者,如果您希望以后提供该位置,请将joins切换为includes