我有一个属于用户的更新模型。为了显示一个用户的所有朋友的更新,我正在做类似的事情:
Update.where("user_id" => [array_of_friend_ids])
我知道“正确”的做事方式是创建一个方法来创建上述数组。我开始编写该方法,但它只工作了一半。目前我的用户模型中有这个:
def self.findfriends(id)
@friendarray = []
@registered_friends = Friend.where("user_id" => id)
@registered_friends.each do |x|
@friendarray << x.friend_id
end
return @friendarray
end
我正在视图中执行整个操作:
<% @friendinsert = User.findfriends(current_user.id) %>
<% @friendarray = [] %>
<% @friendarray << @friendinsert %>
<%= @friendarray.flatten! %>
然后我打电话给 Update.where("user_id" => @friendarray) 。但显然我在这里以一种非常老套的方式做事。我有点困惑 Rails 何时可以从视图中的模型和方法中“看到”某些变量。插入一组 ID 以查找其更新的最佳方法是什么,因为我不应该在视图本身中使用太多逻辑?