我有两个型号:
多晶型
class Custo < ActiveRecord::Base
belongs_to :custavel, polymorphic: true
accepts_nested_attributes_for :custavel, allow_destroy: true
validates_presence_of :numero, :serie
validates_uniqueness_of :numero, scope: :serie
end
另一个班级
class Pagamento < ActiveRecord::Base
has_one :custo, as: :custavel
end
一般来说, numero 和系列由用户输入填充,但仅当多态是 Pagamento 时我需要用 custavel_id 填充 numero 列。
然后,我试了一下:
before_save :set_numero
def set_numero
return unless custavel_type == 'Pagamento'
write_attribute(:numero, custavel_id)
end
但验证失败,因为 custavel_id 尚未存在。怎么做?
答案 0 :(得分:2)
修改callback
方法
before_save :set_numero
def set_numero
write_attribute(:numero, custavel_id) if custavel_type == 'Pagamento'
end