Ruby检测列值是否已更改

Ruby检测列值是否已更改,ruby,ruby-on-rails-3,Ruby,Ruby On Rails 3,所以我有一句话: if self.company_changed? 它可以正常工作,但它可以检测公司是否对该对象进行了更改。我需要知道数据库值是否已更改,而不是内存中的值是否已更改。所以我试了一下: if :company_changed? 当我只执行一行代码时,这似乎在调试模式下工作。如果我让它运行,它在无限循环上测试失败 我的问题是,在ruby中可以使用什么来检查列值是否实际发生了更改。我很确定您实际上是在谈论ActiveRecord。在这种情况下,您需要重新获取记录,以查看数据库中的值

所以我有一句话:

if self.company_changed?
它可以正常工作,但它可以检测公司是否对该对象进行了更改。我需要知道数据库值是否已更改,而不是内存中的值是否已更改。所以我试了一下:

if :company_changed?
当我只执行一行代码时,这似乎在调试模式下工作。如果我让它运行,它在无限循环上测试失败


我的问题是,在ruby中可以使用什么来检查列值是否实际发生了更改。

我很确定您实际上是在谈论ActiveRecord。在这种情况下,您需要重新获取记录,以查看数据库中的值是否已更改

self.class.find(self.id).company != self.company
这方面的通用方法可能类似于:

def attr_changed_in_db?(attr)
  self.class.find(self.id).attributes[attr] != self.attributes[attr]
end

我很确定你说的是ActiveRecord。在这种情况下,您需要重新获取记录,以查看数据库中的值是否已更改

self.class.find(self.id).company != self.company
这方面的通用方法可能类似于:

def attr_changed_in_db?(attr)
  self.class.find(self.id).attributes[attr] != self.attributes[attr]
end

伟大的瑞安·贝茨对此进行了调查。

伟大的瑞安·贝茨对此进行了调查。

你的问题很不清楚。什么是专栏?您正在使用mysql gem吗?你是在用Rails还是别的什么<代码>如果:ads始终为真。请考虑一下你的问题,从一开始就开始解释。我很困惑。(你能展示一下方法
company\u changed吗?
?是基于ROR的吗?然后把它标记为
ROR
。这是一种ROR方法。该列是company。company\u changed?是由活动记录生成的。如果你不理解一个问题,请询问更多信息。不要仅仅通过互联网向下投票和投票来关闭。这就是人们离开的原因。)网站。@ JonathanO。请考虑阅读你的问题很不清楚。什么是专栏?你在使用MySQL宝石吗?你在使用Rails还是什么?<代码>:Advs/COD>总是正确的。请考虑重新考虑你的问题并从一开始就开始解释。我很困惑。(你能展示一下方法
company\u changed吗?
?是基于ROR的吗?然后把它标记为
ROR
。这是一种ROR方法。该列是company。company\u changed?是由活动记录生成的。如果你不理解一个问题,请询问更多信息。不要仅仅通过互联网向下投票和投票来关闭。这就是人们离开的原因。)“JonathanO请考虑阅读这个屏幕演员回答我完美地这个屏幕演员回答我完美。”