我正在使用amistad gem来处理好友关系。用户具有与之关联的事件。我想根据他们与朋友的关系为给定用户提供活动信息。
我使用了http://ruby.railstutorial.org中的以下代码来跟踪关系。但是对于amistad,我没有 user.friend_ids 方法只有 user.friends 方法。
如何通过 user.friends 调用获取类似的Feed结果类型(可以分页,以及所有这些),它会为我提供一个用户对象列表,而不仅仅是ID? / p>
class Micropost < ActiveRecord::Base
default_scope :order => 'microposts.created_at DESC'
# Return microposts from the users being followed by the given user.
scope :from_users_followed_by, lambda { |user| followed_by(user) }
private
# Return an SQL condition for users followed by the given user.
# We include the user's own id as well.
def self.followed_by(user)
following_ids = %(SELECT followed_id FROM relationships
WHERE follower_id = :user_id)
where("user_id IN (#{following_ids}) OR user_id = :user_id",
{ :user_id => user })
end
end
这主要是伪代码,因为它不起作用,但这是我认为我想在代码中完成的事情:
class Event< ActiveRecord::Base
default_scope :order => 'event.created_at DESC'
# Return events from friends of a user.
scope :from_friends, lambda { |user| friends_of(user) }
private
# Return an SQL condition for users followed by the given user.
# We include the user's own id as well.
def self.friends_of(user)
friend_ids = %(SELECT friendIDs FROM friendships)
where("user_id IN (#{friend_ids})")
end
end
答案 0 :(得分:0)
您可以手动将friend_ids
方法添加到User
模型。
def friend_ids
self.friends.map(&:id)
//Here, I'm iterating over user.friends array and getting an array of ids
end
编辑:根据您的评论,我假设您已正确构建用户和事件之间的关联。
例如,用户有许多事件,事件属于用户/多个用户(取决于您的要求。)
正确设置关联后,您只需查看使用上面user_ids
方法获得的friend_ids
的事件。