使用Datamapper从Rails控制器返回关联对象

时间:2012-04-20 10:50:27

标签: ruby-on-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,它可以正常工作。为什么不从rails操作返回位置?

1 个答案:

答案 0 :(得分:0)

它应该如何运作。关系加载了单独的SQL请求,它可能很慢而且很复杂,您应该准确指定要加载的关系。想象一下,在一次get电话中加载所有关系 - 这会让我感到很乱。