2015-08-20 6 views
0

У меня есть два класса; клиента и бронирования. И мой проект состоит только из рубинового кода, а не для рельсов.ruby ​​- пользовательская проверка не называется

Класс бронирования читает объемный файл json по строке, который включает хэш клиента.

Из этого хеша я создаю объект клиента.

Вот код в пределах класса бронирования.

def parse_json 
     File.open(@filename, "r").each do |line|  
      @customers << Customer.new(JSON.parse(line)) 
     end 

     return @customers 
    end 

И у customer.rb У меня есть следующее:

validates_presence_of :hash 
    validate :hash_should_include_all_fields 
    attr_reader :name, :userid, :latitude, :longitude, :distance 

    def hash_should_include_all_fields 
     puts "I'm here #{hash}" 
     if hash.assert_valid_keys('user_id', 'name', 'latitude', 'longitude') 
      puts "Valid" 
     else 
      puts "Not valid" 
     end 
    end 

Однако, как я создаю объекты клиента, hash_should_include_all_fields метод не вызывается.

Что мне не хватает здесь, это было бы здорово, если бы вы могли помочь.

Благодаря

+0

спасают вас модель? Или проверить правильность? Модели не проверяются, только когда вы их создаете. –

ответ

2

Вы звоните new, который будет строить Customer объект, но не делать ничего больше.

Вызов create! или create также запускает проверки и записывает объект в базу данных, если это модель active_record.

Если вы не хотите, чтобы записать его в databas вы можете вызвать valid? на экземпляр, созданный с new

+0

тоже 'save' пробег проверка. –

+0

Привет, Аксель, спасибо за ваш ответ, но относительно вызова «нового» для создания экземпляра validates_presence_of также не работает. Поэтому, когда я даю параметры nil классу клиентов, он также дал «no method error для класса nil». Итак, что лучший способ создать эти объекты? – CanCeylan

+0

Я не знаю, что вы подразумеваете под «параметрами для класса клиентов»? «Наилучший способ» действительно зависит от того, что может показаться на нескольких строках. Вот немного более подробный ответ на новый vs. create http://stackoverflow.com/questions/4333163/question-about-create-and-new-methods-in-activerecord-class –

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