Ruby on rails 如何检查特定属性在rails更新方法中是否发生了更改?

Ruby on rails 如何检查特定属性在rails更新方法中是否发生了更改?,ruby-on-rails,ruby,Ruby On Rails,Ruby,当我更新一条记录时,我想让程序看看在更新保存期间是否更新了某个属性 具体来说,在使用参数更新记录后,我希望程序查看@state\u race.poll参数是否更改。如果有,我想执行另一个代码块 如何检查某些属性是否已更改 我的@state\u race.poll\u已更改?不工作 def update @state_race = StateRace.find(params[:id]) if @state_race.update_attributes(state_race_pa

当我更新一条记录时,我想让程序看看在更新保存期间是否更新了某个属性

具体来说,在使用参数更新记录后,我希望程序查看
@state\u race.poll
参数是否更改。如果有,我想执行另一个代码块

如何检查某些属性是否已更改

我的
@state\u race.poll\u已更改?
不工作

  def update
    @state_race = StateRace.find(params[:id])
    if @state_race.update_attributes(state_race_params)
    puts 'race updated' 
        if  @state_race.poll_changed?
          puts 'poll changed' 
        else 
        end
    else
      render('edit')
    end 
  end

这里的问题是,在属性成功更新后,您是否更改了方法
poll\u?
。要使用此
polling\u changed
我认为您应该
@state\u race.assign\u attributes(state\u race\u params)
并在更新后更新项,或者重写,比如存储值属性
poll
,并在更新后将其与新值进行比较。

如果要将当前值保存在其他变量(例如

old_poll = @state_race.poll
然后在更新之后,您可以比较这些值

if (old_poll == @state_race.poll)

第二个解决方案是使用gem

为什么不为此使用回调?我假设使用
put
只是一个示例,说明您感兴趣的事件或状态类型。但不幸的是,它并没有明确说明您实际想要实现什么,以及什么解决方案最适合您的需求——例如,模型中的回调。你能详细说明一下为什么你想知道这些属性的变化,以及发生这种变化时你实际上想做什么吗?这就是为什么我最终做了这些事情,并且成功了。非常感谢。