Ruby on rails 想要优雅的ActiveRecord链接
在我的Rails 3应用程序中,我得到了以下用户:Ruby on rails 想要优雅的ActiveRecord链接,ruby-on-rails,ruby-on-rails-3,activerecord,rails-activerecord,Ruby On Rails,Ruby On Rails 3,Activerecord,Rails Activerecord,在我的Rails 3应用程序中,我得到了以下用户: 朋友(他们也是用户) 活动(通过) 有一个动作,我需要显示我朋友的活动 我希望通过这样的链条来实现这一点(我的问题是:我如何才能做到?): 但它不起作用,因为当前用户.friends返回一个ActiveRecord::Relation对象 undefined method `activities' for #<ActiveRecord::Relation:0xc4d7770> 它工作正常,但没有我想要的那么优雅:) 那么,有
- 朋友(他们也是用户)
- 活动(通过)
当前用户.friends
返回一个ActiveRecord::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
class用户
如果我正确地阅读了您要查找的内容,那么您似乎正在尝试加入
ActiveRecord支持通过includes调用进行即时加载,该调用也可以有条件
我认为这会解决您的问题。实际上,加入或包含不是问题-我只是在寻找更优雅的AR查询方式。无论如何,谢谢:)有很多
:extend
可能是你要找的?看见
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