Ruby on rails Rails:通过特定的服务将属性设置为只读

Ruby on rails Rails:通过特定的服务将属性设置为只读,ruby-on-rails,activemodel,Ruby On Rails,Activemodel,我有一个名为Product的rails模型,它包含属性price 现在,我不想确定,没有人(我团队中的开发人员)决定只通过执行例如product.update\u attributes(price:2300)之类的操作来更改产品的价格,因为价格应该始终通过名为ProductPriceManager的服务进行更改 因此,您应该执行如下操作:ProductPriceManager.update\u price(product,2300)。原因是,当产品发生变化时,会发生很多其他事情,而这正是Prod

我有一个名为
Product
的rails模型,它包含属性
price

现在,我不想确定,没有人(我团队中的开发人员)决定只通过执行例如
product.update\u attributes(price:2300)
之类的操作来更改产品的价格,因为价格应该始终通过名为
ProductPriceManager
的服务进行更改

因此,您应该执行如下操作:
ProductPriceManager.update\u price(product,2300)
。原因是,当产品发生变化时,会发生很多其他事情,而这正是
ProductPriceManager
所要处理的


实现这一点的好方法是什么?

除了使用更新属性之外,还有其他可能更改价格

如果产品价格发生变化,在产品类中添加一个调用
ProductPriceManager
的回调不是更容易吗

比如:

class Product < ActiveRecord::Base
  after_save ->(obj) { ProductPriceManager.price_changed(obj) }, if: ->(obj) { obj.price_changed? }
end
类产品(obj){ProductPriceManager.price\u changed(obj)}后,如果:->(obj){obj.price\u changed?}
结束
price\u changed方法
应该做的只是更改价格以外的所有操作(因为它刚刚更新)