Возврат связанных объектов из контроллера 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 позвони - это будет мне беспорядок.

Другие вопросы по тегам