Используйте супер с before_validation - PullRequest
0 голосов
/ 11 июня 2010
 I have this code in my every model.
 Class people
   def before_validation
    @attributes.each do |key,value|
      self[key] = nil if value.blank?
    end
   end
 end

 Now i want to put my loop in separate module. Like
 Module test
   def before_validation
     @attributes.each do |key,value|
      self[key] = nil if value.blank?
     end
   end
 end

 And i want to call this before_validation this way
 Class people
   include test
   def before_validation
     super
     .....Here is my other logic part..... 
   end
 end

 Are there any way to do it like that in rails??

1 Ответ

1 голос
/ 11 июня 2010

Вы можете настроить несколько методов, которые будут вызываться обратным вызовом before_validation.Таким образом, вместо непосредственного определения before_validation, вы можете передать методы, которые вы хотите вызвать до проверки.

module Test
  def some_test_before_validaiton_method
    # do something
  end
end

class People < ActiveRecord::Base
  include Test
  def people_before_validation_foo
    #do something else
  end
  before_validation :some_test_before_validation_method
  before_validation :people_before_validaiton_foo
end

Подробнее об обратных вызовах можно прочитать здесь: http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html

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