假设我有一个包含两列的assets
模型:
Assets
ownership:string
lease_id:integer # My Lease Object
所以ownership
可以是“OWN”或“LEASE”。
现在,我只想允许lease_id
如果所有权为LEASE
且所有权恰好为LEASE
,那么我想要一个租约对象。
如何在Rails 3.2.2中完成?
答案 0 :(得分:1)
您可以根据返回true / false的方法添加可选验证。请注意,这只会强制lease_id
时出现ownership == "LEASE"
。这不会限制在任何情况下添加lease_id
。
class Asset < ActiveRecord::Base
validates :lease_id, presence: { :if => :lease? }
def lease?
self.ownership == "LEASE"
end
end
如果要完全限制lease_id
,可以在将对象保存到数据库之前使用回调删除属性。
class Asset < ActiveRecord::Base
before_create :restrict_lease_id
def restrict_lease_id
lease_id = nil if self.ownership == "LEASE"
end
end