Как я могу сделать модель рельсов недействительной - PullRequest
1 голос
/ 07 февраля 2011

У меня есть модель продукта из уникального продукта.Поэтому, когда пользователь купил эту модель, никто не может купить ее снова, а продавец не может быть тем же лицом, что и покупатель.

Когда я буду покупать товар, я называю метод product.buy (покупатель).Но этот метод должен сделать модель недействительной, когда покупатель = продавец и date.sale! = Ноль.Но это не работает.Как я могу это исправить?

   def buy(buyer)
    if self.user != buyer

      if self.date_sale.nil? 
        self.date_sale = Time.now
        self.buyer = buyer
      else
        # self.errors.add(:buyer, "article bougth") # Dont't work
      end             
    else
       # self.errors.add(:buyer, "seller can not buyer") # Dont't work
    end  
  end

Ответы [ 2 ]

5 голосов
/ 07 февраля 2011

Чтобы обработать ноль date_sale, добавьте это сверху вашей модели:

validate_presence_of :date_sale

Чтобы проверить, если покупатель! = Продавец, вы могли бы сделать

validate :buyer_is_not_seller

def buyer_is_not_seller
  errors.add(:buyer, "shouldn't be seller") if buyer.id == seller.id
end
0 голосов
/ 15 апреля 2018

Содержание проверки может работать:

class Domain
  validates_presence_of :name, on: :renew
end

domain = Domain.new
domain.valid?(:renew) # false

http://api.rubyonrails.org/classes/ActiveModel/Validations.html#method-i-valid-3F

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