Как применить закон Деметры в рельсах для петли
У меня есть приложение rails, в котором есть модель Users с одним User_profile. Когда я хочу показать нескольких пользователей на странице, я использую цикл рельсов, например:
<% @users.each do |user| %>
<%= user.user_profile.city %>
<% end %>
Который показывает пользователям город проживания. Однако это не соответствует закону Деметры (или так говорит сборка Дженкинса на моем битбакете). Я мог бы создать область видимости города в своей модели User, чтобы я мог вызвать user.user_profile_city, но я не знаю, является ли это лучшим способом решения этой проблемы, поскольку мне пришлось бы делать это для каждого атрибута user_profile (какой тип таблица user_profile бесполезна). Как Rails может решить эту проблему?
1 ответ
Вам не нужно добавлять область, вы можете использовать delegate
, Добавьте это к вашему User
модель:
delegate :city, to: :user_profile
и тогда ваш взгляд становится
<% @users.each do |user| %>
<%= user.city %>
<% end %>
Проверьте http://api.rubyonrails.org/classes/Module.html для получения более подробной информации.