Как я могу найти кросс-модель таким способом, который наиболее соответствует шаблону MVC?
У меня есть модель, Istc.rb. В индексном представлении, соответствующем этой модели, я хочу сделать это:
= "Last edited by #{User.find_by_id(istc.user_id).first_name}"
Ясно, что вы не можете иметь модель.find в представлении - и это не только модель.find, это находка в другой модели. Но как бы вы рефакторинг это?
Я нервничаю из-за того, что у меня есть такой помощник, потому что он все еще довольно близок к слою View:
module UsernameHelper
def user_name(model)
User.find_by_id(model.user_id) unless User.find_by_id(model.user_id).nil?
end
end
Есть ли способ сделать это, чтобы иметь область действия для пользователя?
# User.rb
scope :lookup, lambda {|model| where("id = ?", model.user_id)}
# username_helper.rb
module UsernameHelper
def user_name(model)
User.lookup(model).first unless User.lookup(model).first.nil?
end
end
Или это должен обработать istcs_controller? Или должен быть отдельный контроллер, который взаимодействует как с моделью ISTC, так и с моделью пользователя?
Мысли приветствуются, и мне бы очень хотелось увидеть примеры приложений, которые также элегантно решают эту проблему.