11155
(-- --)
1
I don't know how to pass many arguments to before_validation hook. I
want to implement the hook on both create and update methods:
before_validation(:on => [:create, :update]) {
// do something
}
But this form of arguments :on => [:create, :update] throws an error:
/active_support/callbacks.rb:403: syntax error, unexpected '[',
expecting tSTRING_CONTENT or tSTRING_DBEG or tSTRING_DVAR or tSTRING_END
... (self.validation_context == :[:create, :update])
This one :on => :create, :update also doesn't work:
syntax error, unexpected ')', expecting tASSOC
before_validation(:on => :create, :update) {
And API has only one example with one argument:
before_validation(:on => :create) do
self.number = number.gsub(/[^0-9]/, "") if
attribute_present?("number")
end
How to pass multiple arguments?
Rafael2
(Rafael)
2
Per this: http://guides.rubyonrails.org/active_record_validations_callbacks.html#available-callbacks
before_validation only occurs/runs on create and update
try this:
before_validation do |object_name|
#some code
end
11155
(-- --)
3
Rafael wrote in post #1110688:
Per this:
http://guides.rubyonrails.org/active_record_validations_callbacks.html#available-callbacks
before_validation only occurs/runs on create and update
Thank you. I found an explanation. Just to pass :on => save will include
both:
class Person < ActiveRecord::Base
# it will be possible to update email with a duplicated value
validates :email, :uniqueness => true, :on => :create
# it will be possible to create the record with a non-numerical age
validates :age, :numericality => true, :on => :update
# the default (validates on both create and update)
validates :name, :presence => true, :on => :save
end