RoR 3.1 - загрузка связанных объектов при запросе дочернего элемента с помощью фразы where - PullRequest
1 голос
/ 30 сентября 2011

У меня следующая структура

class List < ActiveRecord::Base
    has_many :global_lists
end

class GlobalList < ActiveRecord::Base
    set_table_name :globals_lists
    belongs_to :list
end

и следующее:

gl=GlobalList.find(1)   #works 
gl.list                 #works
gm=GlobalList.where(:global_id => 23).includes(:list) #works
gm.list                             # doesn't work

Как мне получить доступ к списку при использовании где для возврата объекта?

ТНХ

edit: есть ли способ для меня сгладить это и получить все списки, которые имеют это? Я думаю, что я мог бы пройтись по нему, но у меня есть ощущение, что может быть какой-то синтаксис, который я не знаю

Ответы [ 3 ]

2 голосов
/ 30 сентября 2011

Проблема в том, что GlobalList.find возвращает один объект GlobalList, тогда как ваш запрос с where возвращает объект ActiveRecord::Relation (который представляет собой целый набор объектов). Вы хотите:

gm = GlobalList.where(:global_id => 23).includes(:list).first
1 голос
/ 30 сентября 2011

Эта строка:

gm = GlobalList.where(:global_id => 23).includes(:list)

возвращает коллекцию моделей. Вы должны сначала первым получить список.

gm.first.list
0 голосов
/ 30 сентября 2011
GlobalList.find_by_global_id(23).list
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...