我想知道一个正确的方法来改变一个列的值,如果其他列改变,我知道一个 case return self.prices_updated_at = Time.zone.now if currency_changed?的classic 方法

但是当我有很多 case 的时候,我不知道如何写得更恰当

return unless currency_changed? || price1_changed? || price2_changed? ||
                  price3_changed? || price4_changed? ||
                  price5_changed? || price6_changed?

    self.prices_updated_at = Time.zone.now

推荐答案

你可以用changed_attributes

return unless (changed_attributes.keys & %w[currency price1 price2 price3 price4 price5 price6]).any?
self.prices_updated_at = Time.zone.now

Ruby-on-rails相关问答推荐

使用超级用户角色和未知密码创建与POSTRES用户的连接

我try 使用Ruby on Rails7创建一个Carbon 足迹计算器.但我无法保存和用户S对象

Grape api (rails) - 未初始化常量 Endpoints::TodoAPI (NameError)

如何在生成的 HTML 本身中显示部分名称

Factory Girl + Mongoid 在fixture 中嵌入文档

rake assets:precompile try 连接到数据库

在 rails 3 中设置记录器

Rails Mailer Net::OpenTimeout: execution expired 仅在生产服务器上出现异常

simple_forms 自定义数据属性

将 Amazon SES 与 Rails ActionMailer 结合使用

带有 master.key 的 Rails 5.2 - Heroku 部署

Rails 3.1 插件 gem、虚拟测试应用程序、rspec

您将 Rack 中间件文件和要求放在哪里?

Rails 4模块的未初始化常量

rbenv:没有 gemsets 生存

为什么 Google Oauth 在我的 Rails 应用程序中返回无效的 redirect_urI?

如何在 rake 任务中强制 RAILS_ENV?

Ruby 1.9.2 和 Rails 3 无法打开 rails 控制台

在 GIT 中处理 Rails db/schema.rb 文件的正确方法是什么?

使用 Rspec 测试关联的正确方法?