3

Rails:includeで ActiveRecord のメソッドの 1 つを呼び出すときにハッシュ値を渡す例をいくつか見てきました。findただし、関係メソッドを介してこれが可能かどうかの例は見たことがありません。たとえば、次のものがあるとします。

def User < ActiveRecord::Base
  has_many :user_favorites
  has_many :favorites, :through => :user_favorites
end

def Favorite < ActiveRecord::Base
  has_many :user_favorites
  has_many :users, :through => :user_favorites
end

def UserFavorite < ActiveRecord::Base
  belongs_to :user
  belongs_to :favorite
end

私が見るすべての例は、次のようなコードを示しています。

User.find(:all, :include => :favorite)

しかし、関係の使用を示す例は見当たりません。代わりに、私がこのようなことをすることは可能でしょうか?

User.favorites(:include => :user)
4

2 に答える 2

6

リレーションをクラス メソッドとして使用することはできません。インスタンスメソッドです。あなたは呼び出すことができます

@user.favorites

Eager Loading に関するこのスクリーンキャストをチェックしてください

http://railscasts.com/episodes/22-eager-loading

そうなる

 User.find(:all, :include => :favorites)

またはRails 3.xの場合

 User.includes(:favorites)
于 2011-03-27T20:52:57.037 に答える
1

モデルの関連付けに追加:includeして、オブジェクトが読み込まれるときに 2 次関連付けを熱心に読み込むことができます。

http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-belongs_to http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-has_many

于 2011-03-27T20:59:00.607 に答える