在我的 Rails 3 应用程序中,我的用户拥有:
- 朋友(他们也是用户)
- 活动(通过PublicActivity)
有一个动作我需要显示我朋友的活动。
我希望通过这样的链来做到这一点(我的问题是:我该怎么做?):
@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