Проверка модели не работает - PullRequest
0 голосов
/ 27 января 2012

Я очень разочарован этим, потому что я должен делать что-то явно неправильное - но я не могу понять, что!

По сути, я пытаюсь добавить проверкук модели.Когда я проверяю валидацию в консоли, ни один из настроенных мной валидаторов, похоже, не работает!

Вот эта модель:

class Sale < ActiveRecord::Base
    validates :product, :presence => true
    validates :variant, :presence => true
    validates :price, :presence => true
    validates :start, :presence => true
    validates :end, :presence => true

    belongs_to :shop
end 

Вот мой вывод на консоль:

1.9.2-p290 :008 > s = Sale.new
 => #<Sale id: nil, product: nil, variant: nil, start: nil, end: nil, price: nil, shop_id: nil, created_at: nil, updated_at: nil, compare_at: nil> 
1.9.2-p290 :009 > s.valid?
 => true 
1.9.2-p290 :010 > s.save
  SQL (1.2ms)  INSERT INTO "sales" ("compare_at", "created_at", "end", "price", "product", "shop_id", "start", "updated_at", "variant") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)  [["compare_at", nil], ["created_at", Fri, 27 Jan 2012 02:06:40 UTC +00:00], ["end", nil], ["price", nil], ["product", nil], ["shop_id", nil], ["start", nil], ["updated_at", Fri, 27 Jan 2012 02:06:40 UTC +00:00], ["variant", nil]]
 => true 

Теперь, если я правильно понимаю эту статью , valid? должен вернуть false, поскольку некоторые атрибуты объекта равны нулю, когда модель определяет, что они не должны быть -но это не так!

Есть идеи?

1 Ответ

0 голосов
/ 28 января 2012

Оказывается, ошибка здесь была прямо перед моим лицом.

У меня был файл дополнения с именем Sale.rb в папке с именем jobs.Этот файл повторно открыл класс Sale и добавил дополнительные функции, относящиеся к модулю Delayed_Job.По неопределенной причине это препятствовало тому, чтобы проверки модели работали или отвечали на методы как valid?.Чтобы решить эту проблему, я просто добавил методы, которые я написал в этом отдельном файле, и объединил их в модель \ Sale.rb.

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