Как получить идентификатор корреспондента через модель на консоли рельсов - PullRequest
0 голосов
/ 27 мая 2019

Я пытаюсь получить простую ситуацию:

У меня есть модель с именем Company, внутри Company у меня есть компании, и у меня есть следующий объект: "state_id".Я хочу найти связанные компании, которые содержат какой-то идентификатор.

Это единственный путь, по которому я могу получить state_id.Итак, я делаю:

Company.all.each do |comp|
     comp.address.city.state_id
end

Это работает!Но когда я делаю:

Company.all.each do |comp|
     comp.address.city.state_id = 27
     #or comp.address.city.state_id(27)
end

он не возвращает правильные данные

Я знаю, что это просто, но, к сожалению, я не получил правильный вывод.

Большое спасибо!

Ответы [ 2 ]

1 голос
/ 27 мая 2019

Попробуйте

Company.joins(address: :city).where(cities: {state_id: 27})
0 голосов
/ 28 мая 2019

Вы можете заставить его работать методом select. Кроме того, не перепутайте == и = - первый проверяет равенство, а второй присваивает значение:

needed_companies = Company.all.select do |comp|
     comp.address.city.state_id == 27
end

Но это не правильный путь, потому что вы загружаете все компании в память и фильтруете ее. Гораздо лучше использовать SQL-запрос (как в ответе Ursus) и возвращать только необходимые компании из БД

...