0

我有两个相互关联的模型(多对多),我想在我的 Rails 控制器操作的响应中返回它们。

这两个类是用户和位置。还有一个链接类 UserLocation。

User.rb 看起来像:

class User

  include DataMapper::Resource

  ...
  has n, :user_locations
  has n, :locations, :through => :user_locations

end

用户位置.rb:

class UserLocation

  include DataMapper::Resource

  # attributes
  property :id, Serial

  # relationships
  belongs_to :user
  belongs_to :location

  # validation
  validates_presence_of :user, :location

end

位置.rb:

class Location

  include DataMapper::Resource

  # attributes
  # no need to specify the user relation AFAIK

end

当我执行 aUser.get(id)时,它返回所有用户属性,但不返回位置。我可以通过代码进行调试并运行 auser.locations并且它可以正常工作。为什么没有从 rails 操作返回位置?

4

1 回答 1

0

这就是它应该如何工作的方式。关系是通过单独的 SQL 请求加载的,它可能既慢又复杂,您应该准确指定要加载的关系。想象一下在一次调用中加载所有关系get——这会让我一团糟。

于 2012-04-21T06:14:21.237 回答