我目前正在从事一个项目,我通过 has_one 关联将保修附加到设备(设备有一个保修,保修属于设备)。一切正常,除了我的一位同事建议我在 device_warranty 的 device_warranty_ends 属性上添加存在验证,以确保在设备有保修时至少填充此字段。
然而问题是,现在,您无法创建没有保修的设备,这显然不是现实生活中的情况,因为设备可以在没有保修的情况下自然存在。所以,我的问题是,如何仅在将 device_warranty 连接到设备时验证 device_warranty_ends。
换句话说,创建设备不应该关心保修,除非有人确实为设备附加了保修(通过填写字段),然后我才应该检查 device_warranty_ends 是否存在:true 。
谢谢。
这是我当前的验证代码:
class DeviceWarranty < ActiveRecord::Base
belongs_to :device
validates :warranty_ends_at, presence: true
end
class Device < ActiveRecord::Base
has_one :device_warranty