0
我在不同的型號上有兩個相關的驗證。我可以驗證一種方式,但不是另一種。後驗證的工作原理是:如果我嘗試更改作爲賣方的可用數量,並且人們已經訂購了一些,它(正確)不會讓我將數量更改爲已訂購數量以下。rails - 驗證已訂購的產品是否有可用數量
訂單驗證不起作用:如果我嘗試將訂單數量改爲超過可用數量,它會讓我。它只檢查目前的總和(我猜在保存之前),並且沒有注意到買家試圖偷偷出來的東西超出了可用的範圍。當我嘗試將訂單更改爲少於可用數量時,它不會讓我檢查訂單(保存前)的當前總和。
我也嘗試驗證訂單的數量+剩餘的可用庫存(可用-sum訂購),但有同樣的問題。
我該如何獲得驗證,以便檢查保存後的數量爲,然後如果該值無效則不保存它?這將有工作也爲編輯訂單
class Post < ActiveRecord::Base
belongs_to :product
belongs_to :event
has_many :orders, :dependent => :destroy
attr_accessible :quantity, :deadline, :product_id, :event_id
validate :quantity_gt_ordered
def quantity_gt_ordered
self.errors.add(:quantity, " - People have already ordered more than this") unless self.quantity >= self.sum_orders
end
def sum_orders
self.orders.sum(:quantity)
end
class Order < ActiveRecord::Base
belongs_to :user
belongs_to :post
attr_accessible :order_price, :post_id, :user_id, :quantity
validate :quantity_is_available
def quantity_is_available
self.errors.add(:quantity, " - Please order only what's available") unless self.sum_post_orders <= self.post.quantity
end
def sum_post_orders
Order.where(:post => self.post).sum(:quantity)
end
謝謝,我同意我應該能夠。我嘗試了你的代碼,但它仍然可以讓我訂購的數量超過了可用數量(然後讓我無法將其更改回有效數額) – thejonster
請參閱編輯的答案,這應該解決它。 –
在我嘗試編輯現有訂單之前,這種方式仍然有效:訂購的當前數量雖然有效,但可能會大於其他買方可用的數量。當我編輯並保存訂單而不更改數量時,它會添加錯誤 – thejonster