2012-03-06 6 views
0

は、私は2つの列が含まれassetsモデルを持っていると言う:Rails 3.2の列に基づいた関連付けを確認するにはどうすればよいですか?

Assets 
    ownership:string 
    lease_id:integer # My Lease Object 

のでownershipが「OWN」または「リース」いずれかとすることができます。

所有権がLEASEの場合はlease_idを許可し、オーナーシップがLEASEの場合は、リースオブジェクトが必要です。

これはどのようにRails 3.2.2で行うことができますか?

答えて

1

true/falseを返すメソッドに基づいてオプションの検証を追加できます。 ownership == "LEASE"の場合にはlease_idが存在することを強制します。これにより、いかなる場合でもlease_idの追加が制限されることはありません。

class Asset < ActiveRecord::Base 
    validates :lease_id, presence: { :if => :lease? } 

    def lease? 
    self.ownership == "LEASE" 
    end 
end 

あなたが完全にlease_idを制限したい場合は、オブジェクトがDBに保存される前に、プロパティを削除するためにコールバックを使用することができます。

class Asset < ActiveRecord::Base 
    before_create :restrict_lease_id 

    def restrict_lease_id 
    lease_id = nil if self.ownership == "LEASE" 
    end 
end 
関連する問題