0

互いに関連する (多対多) 2 つのモデルがあり、Rails コントローラー アクションからの応答で両方を返したいと考えています。

2 つのクラスは User と Location です。リンク クラス 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)と、すべてのユーザー属性が返されますが、場所は返されません。コードをデバッグして a を実行するuser.locationsと、正しく動作します。レールアクションから場所が返されないのはなぜですか?

4

1 に答える 1

0

それがどのように機能するかです。リレーションは別の SQL リクエストでロードされます。遅くて複雑になる可能性があり、どのリレーションをロードするかを正確に指定する必要があります。get1 回の呼び出しですべてのリレーションをロードすることを想像してみてください。

于 2012-04-21T06:14:21.237 に答える