在我的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
答案 0 :(得分:0)
如果我正在阅读您正在寻找的内容,那么您似乎正在尝试加入。
ActiveRecord支持通过包含调用的急切加载,也可能有条件。
http://guides.rubyonrails.org/active_record_querying.html#eager-loading-associations
我认为这可以解决您的问题。