我有一个rails应用程序,其用户模型有一个User_profile。当我想在页面上显示多个用户时,我使用了如下的rails循环:
<% @users.each do |user| %>
<%= user.user_profile.city %>
<% end %>
显示用户所在城市。然而,这并不遵循得墨忒耳的规律(或者我的bitbucket建立的jenkins告诉我)。我可以在我的用户模型上创建一个城市范围,以便我可以调用user.user_profile_city,但我不知道这是否是解决此问题的最佳方法,因为我必须为每个user_profile属性执行此操作(哪种类型)使user_profile表无用)。 Rails解决这个问题的方法是什么?
答案 0 :(得分:2)
您不需要添加范围,您可以使用delegate
。将其添加到您的User
模型中:
delegate :city, to: :user_profile
然后您的观点变为
<% @users.each do |user| %>
<%= user.city %>
<% end %>
查看http://api.rubyonrails.org/classes/Module.html#method-i-delegate了解详情。