0
我有一個模型,Offer
,屬於User
。用戶有一個屬性:prepaid_amount
,表示金額,而:bid_total
是項目上所有金額的總和乘以每個出價的數量。因此,有兩份標書,一個與quantity => 3
和amount => 10
,另一個與quantity => 2
和amount => 3
用戶,有36rails 3關係驗證
如果prepaid_amount是大於這個值的bid_total
,一切都很好。假設prepaid_amount
爲40.
如果我想驗證用戶的新出價quantity => 1
,那麼出價金額可以是大於0且大於4的任何整數。如果它爲零,則1 * 0,並且驗證應該失敗,因爲出價必須大於零。如果金額是(比如說)5,則出價不應該被驗證,因爲36 + 1 * 5 = 41,這大於prepaid_amount
。
如何在Offer模型中的Rails 3中創建這樣的驗證?這是我有什麼,這是行不通的:
class Offer < ActiveRecord::Base
belongs_to :user
validates :user_id, :presence => true, :numericality => true do
validates :qty, :presence => {:if => Proc.new { |offer| (offer.user.prepaid_amount-offer.user.bid_total)/offer.amount >= offer.qty} }
end
end
我想這是我的下一步,如果它解決了這個問題。不知道我看到了我想要做的那些複雜的事情......但我會給它一個機會。 – 2011-06-13 13:08:31
validates:qty,:numericality => {:less_than => Proc.new {| offer | (offer.user.prepaid_amount-offer.user.bid_total)/offer.amount}}會做到這一點...... – 2011-06-13 15:34:08
複雜的我只是說它已經成爲嘗試使用內置驗證將各種驗證部件焊接在一起的練習工具。 – jaydel 2011-06-13 23:27:17