我在Rails 4上有一个非常简单的问题。
假设您有一个User
模型has_one
Account
和Account
belongs_to
User
在用户显示页面上,我想显示用户属性以及帐户属性。
在users_controller中,我可以这样做:
def show
@user = User.find(params[:id])
@account = @user.account
end
然后在视图中:
<%= @user.name %>
<%= @account.id %>
或
我可以设置用户实例变量:
def show
@user = User.find(params[:id])
end
并在视图中:
<%= @user.name %>
<%= @user.account.id %>
这些有区别吗?其中一个是&#39; Rails Way&#39 ;?我可能在想这个,但我很好奇这里有什么是正确的。
答案 0 :(得分:0)
我认为这确实是一个偏好问题。如果我是那个写它的人,我会将它分配给一个变量,如果它将在视图中多次使用。如果仅使用一次,则分配它似乎是多余的。
答案 1 :(得分:0)
建议的最佳做法是每个控制器操作限制一个实例变量,并且不允许@ person.account.id(链接)。
请参阅https://robots.thoughtbot.com/sandi-metz-rules-for-developers
使用装饰器是个好主意(例如Draper)。上面的例子太简单了,无法添加另一个gem。您可以在rails中使用delegate