Возврат связанных объектов из контроллера Rails с помощью Datamapper
У меня есть две модели, которые связаны друг с другом (многие ко многим), и я хочу вернуть их обе в ответ от моего действия контроллера Rails.
Два класса - Пользователь и Местоположение. Также есть ссылка на класс UserLocation.
User.rb выглядит так:
class User
include DataMapper::Resource
...
has n, :user_locations
has n, :locations, :through => :user_locations
end
UserLocation.rb:
class UserLocation
include DataMapper::Resource
# attributes
property :id, Serial
# relationships
belongs_to :user
belongs_to :location
# validation
validates_presence_of :user, :location
end
Location.rb:
class Location
include DataMapper::Resource
# attributes
# no need to specify the user relation AFAIK
end
Когда я делаю User.get(id)
он возвращает все пользовательские атрибуты, но не местоположения. Я могу отладить код и запустить user.locations
и это работает правильно. Почему места не возвращаются с рельсов?
1 ответ
Вот как это должно работать. Отношения загружаются отдельным SQL-запросом, он может быть медленным и сложным, и вы должны точно указать, какое отношение вы хотите загрузить. Представь себе загрузку всех отношений в одном get
позвони - это будет мне беспорядок.