私の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)
それは問題なく動作しますが、私が望むほどエレガントではありません:)
では、チェーンを使用して友人の行動を照会するよりエレガントな方法はありますか?
User モデルは次のようになります。
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