Validates inclusion of include fails at plugin

Hello,

MyModel.rb,

TYPES = { “type1” => 1 , “type2” => 2, “type3” => 3 }.freeze
validates_inclusion_of :my_type, :in => TYPES.keys


MyModelPatch.rb,

base.send(:remove_const, :TYPES)
base._validators[:my_type].reject!{ |validator| validator if
validator.is_a? ActiveModel::Validations::InclusionValidator }

TYPES = { “type1” => 1 , “type2” => 2, “type3” => 3,“type4” => 4,
“type5” => 5 }.freeze
base.const_set(‘TYPES’,TYPES)
base.class_eval do
validates_inclusion_of :my_type, :in => TYPES.keys
end


In my View or Console, The MyModel::TYPES gives me the patched hash, But
saving the patched model with the new types failes. With the error “is
not included in the list”

Please help me, As I am not able to figure out what wrong I have done,
And am I missing something.

Thank You,

Best Regards,
Rupesh

Thank You Matt. I was not aware of this. This helped me solve my
problem.
The “sub class” idea is a good one, did not occur to me at all. :frowning:

On Saturday, 22 February 2014 15:05:44 UTC-5, Ruby-Forum.com User wrote:


In my View or Console, The MyModel::TYPES gives me the patched hash, But
saving the patched model with the new types failes. With the error “is
not included in the list”

Please help me, As I am not able to figure out what wrong I have done,
And am I missing something.

The validations attribute is kept in sync by the various macros
(validates
* and validates itself), but it is NOT the mechanism used to
actually do the validation - that’s handed off to the callbacks stuff
(which also handles :on, :if, and :unless criteria).

This post seems closer to what you’re intending:

http://gistflow.com/posts/749-canceling-validations-in-activerecord

But I’d recommend thinking more about what the intent actually is - if
you’re trying to override the list of possible types in a subclass, it
would make more sense to have an explicit validator that asks the
class
for the correct set of types to be used.

–Matt J.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs