我在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 %>这些有什么区别吗?其中之一是“铁路之路”吗?我可能想得太多了,但我只是好奇在这里什么是正确的。
发布于 2016-03-31 03:19:03
我会说,这真的是一个偏好的问题。如果我是编写它的人,我会将它赋值给一个变量,如果它要在视图中多次使用的话。如果只使用一次,那么分配它似乎是多余的。
发布于 2016-03-31 03:32:43
推荐的最佳实践是,每个控制器操作只允许一个实例变量,并且不允许使用@person.account.id (链接)。
请参阅https://robots.thoughtbot.com/sandi-metz-rules-for-developers
使用装饰师是个好主意(例如Draper)。上面的例子太简单了,不能再添加一个创业板。您可以在rails中使用委托。
请参阅http://apidock.com/rails/Module/delegate
https://stackoverflow.com/questions/36323399
复制相似问题