У меня есть модель обновления, которая принадлежит пользователям. Чтобы показать все обновления друзей одного пользователя, я делаю что-то вроде:Использование метода в модели, вызывающего его из вида
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 может «видеть» определенные переменные из моделей и методов в представлении. Каков наилучший способ вставить массив идентификаторов, чтобы найти их обновления, так как я не должен использовать много логики в самом представлении?
Можете ли вы пожалуйста укажите свои ассоциации моделей? Я думаю, вы могли бы решить свою проблему путем определения ассоциаций, а не путем создания грязных хакерских массивов :-). – Mattherick
Уверен ... Это в настоящее время ... Обновления принадлежат пользователю, а Пользователь может иметь много обновлений. – jenno