当我致电更新时,我不想只是按照我的意愿更新记录:
-
def update
@simulation = Simulation.find(params[:id])
@simulation.next # This is a function that has some logic to changes a property of the simulation record
@simulation.update(simulation_params)
end
这是解决此问题的正确方法,还是应该使用单独的控制器功能或其他路线?
答案 0 :(得分:1)
为了清楚起见,我个人会在Simulation
中创建一个实例方法,高级代码应该类似..
#Simulation model
class Simulation
....
def next_and_update(attrs)
next
update(attrs)
end
end
#controller
def update
@simulation = Simulation.find(params[:id])
@simulation.next_and_update(simulation_params)
end
想法是,如果你能阅读代码并了解发生了什么,那么可以更多地拥有1-2行。
答案 1 :(得分:0)
听起来“next”是一种在更新(或保存)之前处理一些幕后细节的方法。既然如此,你所做的是合理的。不需要另一种控制器方法或路线。如果你想坚持“更新”,你可以。
在这种情况下,无论是完成更新还是使用保存都没有区别。更新并保存两者都会更新数据库中的记录。
这有帮助吗?