希望优雅的ActiveRecord链接

时间:2013-05-11 06:58:24

标签: ruby-on-rails ruby-on-rails-3 activerecord rails-activerecord

在我的Rails 3应用程序中,我得到了以下用户:

我需要显示朋友的活动。

我希望通过链接这样做(我的问题是:我该怎么做?):

@activities = current_user.friends.activities

但它不起作用,因为current_user.friends返回一个ActiveRecrord :: Relation对象。

undefined method `activities' for #<ActiveRecord::Relation:0xc4d7770> 

我必须这样查询:

@activities = PublicActivity::Activity.where(owner_id: current_user.friend_ids)

它运作正常,但它并不像我希望的那样优雅:)

那么,是否有更优雅的方式使用链接查询朋友的行为?

用户模型如下所示:

class User < ActiveRecord::Base
  has_many :friendships
  has_many :friends, through: :friendships  # 

  has_many :activities, class_name: "::PublicActivity::Activity", as: :owner
  # ...
end

class Friendship < ActiveRecord::Base
  belongs_to :user
  belongs_to :friend, class_name: "User"
end

1 个答案:

答案 0 :(得分:0)

如果我正在阅读您正在寻找的内容,那么您似乎正在尝试加入。

ActiveRecord支持通过包含调用的急切加载,也可能有条件。

http://guides.rubyonrails.org/active_record_querying.html#eager-loading-associations

我认为这可以解决您的问题。