2017-05-11 65 views
0

有2個表:訂單到達。訂單中可能有許多到達。我想驗證特定訂單的到達情況的創建。導軌驗證依賴型號

訂單有場book_idquantity:integer

到達有場order:belongs_toquantity:integer

Order.rb:

class Order < ActiveRecord::Base 
    has_many :arrivals 

    def total_arrival_quantity 
    arrivals.map(&:quantity).sum 
    end 

    def order_quantity_minus_arrival_quantity 
    quantity - total_arrival_quantity 
    end 
end 

Arrival.rb:

class Arrival < ActiveRecord::Base 
    belongs_to :order 

    validates :total_arrival_quantity_less_or_equal_to_order_quantity, on: create 
    validates :current_arrival_quantity_less_or_equal_to_order_quantity, on: create 

    def current_arrival_quantity_less_or_equal_to_order_quantity 
    self.quantity <= order.quantity 
    end 
end 

如何使兩個驗證有效?

回答

1

像這樣的事情應該工作,

validate :order_quantity, on: :create 

private 
def order_quantity 
    if quantity > order.order_quantity_minus_arrival_quantity 
    errors.add(:quantity, 'cannot be greater than ordered quantity.') 
    end 
end 
+0

酷! &'on::create'的作品,與'之前不同' –

+0

Ohh..thnx..i'll更新爲未來的尋求者.. –