2015-08-10 2 views
1

У меня есть страну, которая имеет много области который имеет много магазинов.Рельсы Активный поиск записи на основе belongs_to

Страна> Районы> Магазины.

Я хочу вернуть список магазинов по стране, а не по площади. Что-то вроде этого:

@shops = Shops.find(some query based on country = America). 

Спасибо,

+0

возможно дубликат [Rails-й способ запроса модель с принадлежит \ _to ассоциации] (http://stackoverflow.com/questions/ 13619560/rails-y-way-to-query-a-model-with-a-belongs-to-association) – p4sh4

ответ

2

Обратитесь к документации по рельсам в объединяемых таблиц. В частности, обратите внимание на подраздел с надписью «12.2.4 Присоединение Вложенные ассоциаций (Multiple Level)»:

http://guides.rubyonrails.org/active_record_querying.html#using-array-hash-of-named-associations

Ваш запрос будет, вероятно, в конечном итоге выглядит что-то вроде этого (хотя, возможно, потребуется проверить плюрализацию на некоторых символов):

@shops = Shop.joins(:area => :countries).where(:countries => {:name => 'America'}) 
+0

Большое спасибо, работала точно! – fixulate

2

принадлежит ли вам этот магазин, к которому относится данная область? Если да, возможно, вы можете сделать что-то подобное.

class Country 
    has_many :areas 
    has_many :shops, through: :areas 
end 

class Area 
    belongs_to :country 
end 

class Shop 
    belongs_to :area 
end 

так что вы можете использовать что-то вроде этого: @country.shops

Смежные вопросы