Я все еще озадачен настройкой ваших отношений ... но, скажем, у вас была такая настройка, как я упоминал выше:
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)
При этом последняя часть будет сужена с помощью ruby в приведенном выше коде. Если вы хотите сузить критерии для связанной модели, поскольку вы говорите об использовании только запроса, вы, вероятно, собираетесьиспользовать метод find_by_sql
ActiveRecord и написать запрос от руки.