2013-06-04 2 views
1

Я пытаюсь сделать что-то вроде этого:Цепные Wheres с соединениями ActiveRecord

filter_categorys = params[:filter_categorys] 
companies = Company.where('id_category = (?)', filter_categorys).joins(:subsidiary).where('zone = Nuñez') 

И это не работает ....

Итак, мне нужно, чтобы получить все мои компании, которые имеют id_category и что у них есть хотя бы одна дочерняя компания в «зоне».

Я думаю, что это не так ... пожалуйста, ПОМОГИТЕ! : D

Company.rb:

class Company < ActiveRecord::Base 

    has_many :subsidiary, :foreign_key => :id_company 
    has_many :benefit, :foreign_key => :id_company 
    set_primary_key :id_company 
    self.table_name = 'tbl_companys' 

end 

Subsidiary.rb:

class Subsidiary < ActiveRecord::Base 

    belongs_to :company 
    set_primary_key :id_subsidiary 
    self.table_name = 'tbl_subsidiaries' 

end 
+0

использование 'id_category IN (?)' (Не равно) – MrYoshiji

+0

Спасибо, но проблема в том, что пытается извлечь столбец «зоны» на tbl_companys и его на tbl_subsidiaries –

ответ

2

Вы должны "сказать", где положение о том, что зона находится в дочерней таблице:

Company.where(id_category: filter_categorys).joins(:subsidiary).where(subsidiary: { zone: 'Nuñez' } 

Если он говорит, что «вспомогательная связь не найдена», попробуйте с:

Company.where(id_category: filter_categorys).joins(:subsidiary).where(tbl_subsidiaries: { zone: 'Nuñez' } 
+0

Второй ответ выработанный просто отлично! Я так благодарен MrYoshiji! Сказал (а) спасибо: D !!!!! –

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