如何在将查询添加到posts数组之前将此查询用于执行检查的位置?我收到以下错误“无法将Post转换为数组”。我假设可能有更好的方法来查询这个,但我不确定如何这样做。
这是在用户模型中,我在home_controller中将其称为current_user.personal_feed,然后尝试显示每个结果。
此外,我没有任何问题查询用户“朋友”只是添加通过某些参数的帖子的问题。例如,他们必须有/ slashtag,用户还必须订阅该斜杠标签
def personal_feed
posts = []
# cycle through all posts (of the users "friends) & check if the user wants to see them
Post.find(:all, :conditions => ["user_id in (?)", friends.map(&:id).push(self.id)], :order => "created_at desc").each do |post|
# first checkpoint: does this post contain a /slashtag
post.message.scan(%r{(?:^|\s+)/(\w+)}).map {|element|
# second checkpoint: does this user subscribe to any of these slashtags?
if self.subscriptions.find_by_friend_id_and_slashtag(post.user.id, element[0])
posts += post
end
}
end
end
我已将代码更改为此。
def personal_feed
posts = []
# cycle through all posts (of the users "friends) & check if the user wants to see them
Post.find(:all, :conditions => ["user_id in (?)", friends.map(&:id).push(self.id)], :order => "created_at desc").each do |post|
# first checkpoint: does this post contain a /slashtag
post.message.scan(%r{(?:^|\s+)/(\w+)}).map {|element|
# second checkpoint: does this user subscribe to any of these slashtags?
posts << post if self.subscriptions.find_by_friend_id_and_slashtag(post.user.id, element[0])
}
end
端
它不会引发任何错误,但它不会通过我的条件运行帖子。用户朋友的每个帖子仍在显示,即使他们没有订阅该个人订阅。
答案 0 :(得分:2)
def personal_feed
if user_signed_in?
@good_friends = []
current_user.friends.each do |f|
@good_friends << f #if some condition here
end
else
#cannot find friends because there is not a current user.
#might want to add the devise authenticate user before filter on this method
end
end
找到当前用户,然后循环他们的朋友,只在xyz中将它们添加到数组中。
答案 1 :(得分:0)
def personal_feed
posts = []
# cycle through all posts (of the users "friends) & check if the user wants to see them
Post.find(:all, :conditions => ["user_id in (?)", friends.map(&:id).push(self.id)], :order => "created_at desc").each do |post|
# first checkpoint: does this post contain a /slashtag
post.message.scan(%r{(?:^|\s+)/(\w+)}).map {|element|
# second checkpoint: does this user subscribe to any of these slashtags?
posts << post if self.subscriptions.find_by_friend_id_and_slashtag(post.user.id, element[0])
}
end
posts = posts
end
有效的最终代码段。