Dan*_*n L 0 polymorphism activerecord callback ruby-on-rails-4
我有一个lookups带有子ContractType模型的多态表.我before_save在ContractType模型中有一个回调设置category,但它似乎没有工作.
class Lookup < ActiveRecord::Base
validates :value, presence: true
validates :category, presence: true
end
class ContractType < Lookup
before_save { self.category = "contract_type" }
end
Run Code Online (Sandbox Code Playgroud)
然后我打开rails c:
> c = ContractType.create(value: "test")
> c.errors.messages
=> { :category => ["can't be blank"] }
Run Code Online (Sandbox Code Playgroud)
我没有得到任何错误,只是验证失败.据我所知,语法看起来是正确的,只是before_save回调似乎不起作用......
我错过了一些明显的东西吗?
我发现了问题......验证发生在之前save,所以它总是"失败"验证并在before_save回调发生之前停止.
解决方案是使用before_validation回调.
class ContractType < Lookup
before_validation { self.category = "contract_type" }
end
Run Code Online (Sandbox Code Playgroud)
我对事件顺序的误解.
| 归档时间: |
|
| 查看次数: |
2427 次 |
| 最近记录: |