2011-02-07 2 views
1

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

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

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 

ответ

5

Для обработки всухую 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

незначительные опечатка: Validate: buyer_is_not_seller – tokland

+0

@tokland исправлено, спасибо – marcgg

+0

Здравствуйте, спасибо, но мне нужна эта проверка только тогда, когда пользователь выполняет метод покупки. Я проверяю с _date_sale, что статья продана. Когда я проверяю каждый раз, когда date_sale! = Nil, это означает, что каждая статья продается. – ThreeFingerMark

Смежные вопросы