我的模型有更新方法
def udpate_something(params)
update(id: params[:id],
b: params[:b],
c: params[:c],
d: params[:d])
end
并在控制器中
def update
Model.find(id: params[:id])
.update_something(id: params[:id]
b: params[:b],
c: params[:c],
d: params[:d])
end
这是更新的正确方法还是有更好的方法?
答案 0 :(得分:0)
首先,应该非常罕见(即几乎闻所未闻!)来更新记录的id
(主键)。这是记录的标识符;通过更改此操作,您将搞乱任何关联并可能导致与另一条记录id
发生冲突。
此外,您的udpate_something
[SIC]方法并没有真正实现任何目标。这是一种无用的包装方法。为什么不这样做:
def update
Model.find(id: params[:id])
.update(b: params[:b],
c: params[:c],
d: params[:d])
end
您的控制器方法不处理错误消息,使用强参数(!!)或执行任何渲染/重定向操作 - 但这是一个单独的故事。所有控制器操作都没有通用的“正确的事情”;这真的取决于你想要实现的目标!
我建议查看一些基本资料,例如rails documentation,以了解控制器的结构。