Проверка Rails - генерируется ошибка, но запись все еще сохраняется - PullRequest
0 голосов
/ 13 июля 2010

У меня есть модели order.rb, line_items.rb - где line_item принадлежит порядку. Я добавил пользовательские проверки, поэтому заказ должен содержать только line_items с одинаковым merchant_id

Мой вопрос: кажется, что проверка работает нормально - я могу получить ошибку, когда она нарушена, но записи "line_item" все еще сохраняются в любой ситуации Есть идеи?

Order.rb

validate_on_update :only_one_merchant

def only_one_merchant
        merchants = []
        for line_item in self.line_items
          merchants << line_item.product.merchant_id
        end
        merchants = merchants.uniq
        errors.add(:line_items, "You could only order from one same merchant at time")  if  merchants.length > 1
    end 

Order.rb добавление line_item

  current_item = LineItem.new(:quantity => quantity)
  current_item.variant = variant
  current_item.price   = variant.price
  self.line_items << current_item

Ответы [ 2 ]

0 голосов
/ 13 июля 2010
validate :only_one_merchant

def only_one_merchant
        merchants = []
        for line_item in self.line_items
          merchants << line_item.product.merchant_id
        end
        merchants = merchants.uniq
        errors.add(:line_items, "You could only order from one same merchant at time")  if  merchants.length > 1
    end 

Это решит вашу проблему сначала вызовом этой функции, а затем обновит

0 голосов
/ 13 июля 2010

validate_on_update будет проверять проверку только при обновлении любой записи для проверки записи в любых условиях использования validate

Chnage

validate_on_update :only_one_merchant

до

validate :only_one_merchant

& Проверьте, работает ли он или нет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...