Ruby on rails 调用实例方法时更新记录的正确方法。
当我调用update时,我不想像我希望的那样更新记录:Ruby on rails 调用实例方法时更新记录的正确方法。,ruby-on-rails,ruby,model,controller,put,Ruby On Rails,Ruby,Model,Controller,Put,当我调用update时,我不想像我希望的那样更新记录: 调用模型函数以更新模型的属性 更新模型 -- 这是正确的方法,还是应该使用单独的控制器功能或其他路径 听起来“下一步”是一种在更新(或保存)之前处理一些幕后细节的方法。在这种情况下,你所做的是合理的。不需要其他控制器方法或路由。如果你想坚持“更新”,你可以 在这种情况下,完成更新还是保存不会有什么区别。更新和保存更新数据库中的记录 这有帮助吗?为了清楚起见,我个人会在模拟中创建一个实例方法,高级代码应该类似 #Simulation mode
这有帮助吗?为了清楚起见,我个人会在
模拟中创建一个实例方法,高级代码应该类似
#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行就可以了 是否使用了.mmmmdelicious?不,我只是有一个有趣的口音。您的下一个方法是否只是向@simulation添加一些属性,以便您的更新方法可以将它们与参数一起保存?它正在更改模型上的现有列变量,然后我想在之后保存它。参数永远不会被更改,只有next更改了另一个值。那么我应该下一步/更新,还是应该有一个单独的方法来下一步/保存。为什么不只是一个名为next的方法呢代码>这可以做所有事情(包括保存)。我走这条路线,我喜欢尽可能多地保留控制器的逻辑,使它们更具可读性。@nnnnnn美味,很乐意帮忙,如果你想更新奇,签出rails服务对象
#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