私は次の協会を持っています
class Location < ActiveRecord::Base
has_many :items
end
class Item < ActiveRecord::Base
belongs_to :location
end
Location のインスタンスがいくつかあるとします。これらの場所に属するすべてのアイテムをクエリする必要があります。現在、結果を配列として取得することができました
items =[]
Location.near(latitude,longitude,distance).find_each do |location|
location.items.find_each do |item|
items << item
end
end
ただし、結果を ActiveRecord::Relation として取得する方法はありますか。ActiveRecord::Relation で「where」を使用して結果をさらにクエリしたいからです。
PS 「near」メソッドはジオコーダ gem からのもので、ActiveRecord::Relation を返します。
- - - - - - - - - - -編集 - - - - - - - - - - - - - -
返信ありがとうございます ほぼ解決策が見つかりました
locations = Location.near(latitude,longitude,distance)
Item.where(location_id: locations.pluck(:id))
それは正しい方法ですか?私には少し直感的ではありません。
----------------------再編集 -------------------------- -
ちょっとしたコメント: DataMapper から切り替えているため、直感的ではないと言います。Datamapper の場合は、次のように非常に単純です。
Location.near(blabla).items
アソシエーションを介してクエリを作成するのは非常に簡単です。Datamapper と比較すると、なぜ ActiveRecord の関連付けが役に立たないのか理解できませんか?