私はまだあなたの関係の設定について戸惑いよ...しかし、私は上記のようなセットアップを持っていたと言う:
class Store < ActiveRecord::Base
attr_accessible :attr2, :attr3
has_many :locations
end
class Location < ActiveRecord::Base
attr_accessible :name, :full_address, :latitude, :longitude, :attr1
geocoded_by :full_address
belongs_to :store
after_validation :geocode, :if => :full_address_changed?
end
あなたはこのような何かを行うことができ...
locations = Location.near(current_location.to_s, 20).where(:attr1 => 'a value')
stores_that_match = locations.find_all {|loc| loc.try(:store).try(:attr2) == 'value2' && loc.try(:store).try(:attr3) == 'value3' }.map(&:store)
言われているように、最後の部分は上で提供されたコードの中でルビを使用して絞り込まれます。クエリだけを使用して話しているときに関連するモデルの条件を絞りたい場合、おそらくActiveRecord's find_by_sql
methodを使用し、手動でクエリを書き出します。
ロケーションに店舗との間に「has_many」関係があるのはなぜですか?それは別の方法ではありませんか?のように、リンゴストア 'has_many'の場所。場所がモールか何かでない限り、そこにはただ一つの店しかないだろうと推測しています。 – Batkins
申し訳ありませんが、この例は少し誤解を招いていました。私の説明は下のあなたの答えを参照してください。 –