在调用实例方法时更正记录的正确方法。

时间:2015-08-09 20:38:32

标签: ruby-on-rails ruby model controller put

当我致电更新时,我不想只是按照我的意愿更新记录:

  1. 调用模型函数以更新模型的属性。
  2. 更新模型。
  3. -

    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
    

    这是解决此问题的正确方法,还是应该使用单独的控制器功能或其他路线?

2 个答案:

答案 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”是一种在更新(或保存)之前处理一些幕后细节的方法。既然如此,你所做的是合理的。不需要另一种控制器方法或路线。如果你想坚持“更新”,你可以。

在这种情况下,无论是完成更新还是使用保存都没有区别。更新并保存两者都会更新数据库中的记录。

这有帮助吗?