Mat*_*ins 3 entity-relationship ruby-on-rails query-optimization select-n-plus-1
我已经看到了一些在Rails中:include调用ActiveRecord 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
Run Code Online (Sandbox Code Playgroud)
我看到的所有示例都显示如下代码:
User.find(:all, :include => :favorite)
Run Code Online (Sandbox Code Playgroud)
但我没有看到任何关于使用关系的例子.相反,我可以做这样的事情吗?
User.favorites(:include => :user)
Run Code Online (Sandbox Code Playgroud)
您不能将关系用作Class方法.它是实例方法.你可以打电话
@user.favorites
Run Code Online (Sandbox Code Playgroud)
看看这个关于Eager Loading的截屏视频
http://railscasts.com/episodes/22-eager-loading
这将是
User.find(:all, :include => :favorites)
Run Code Online (Sandbox Code Playgroud)
或者对于Rails 3.x.
User.includes(:favorites)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12322 次 |
| 最近记录: |