Composed_of and validations don't work due to frozen object

composed_of freezes objects but if my object requires validations ie

class MyObject
validate do |record|
if fail?
record.errors.add :base, “FAIL!”
end
end
end

class Foo < ActiveRecord::Base

composed_of :my_object,
:allow_nil => true,
:mapping => [
%w[bgmd_name name],
%w[bgmd_serial_number serial_number]
]

validates_associated :my_object

end

this borks with a object is frozen error deep in
lib/active_model/validations.rb

I’ve got a work around

module MySugr

This module is mainly a hack to get around a bug with composed_of

freezing objects

and ActiveRecord::Validations requiring unfrozen objects

module Composable

def self.included(base)
  base.send :extend, ClassMethods
  base.send :include, ActiveRecord::Validations
  base.send :include, InstanceMethods

  base.send :define_method, :"validation_context=" do |*args|
  end
end

module InstanceMethods
  def initialize(*args)
    errors
  end

  def new_record?
    true
  end

end

module ClassMethods

end

end
end

which I can mix into my class but it is not ideal. How to report a rails
bug? The lighthouse
tracker seems invite only these days?

Brad

And I’m using Rails 3.1 RC1!

On Jun 6, 3:38pm, Brad P. [email protected] wrote:

class Foo < ActiveRecord::Base
end
module Composable
module InstanceMethods
module ClassMethods

end
end
end

which I can mix into my class but it is not ideal. How to report a rails
bug? The lighthouse
tracker seems invite only

Rails moved to using github issues recently.

I believe validates_associated with was intended to be used with
associations rather than aggregations. You might find validates_with
useful

Fred

validates_with is not really the solution. Aggregations are semantically
the
same as has_one relations and should be able to validate
the same as.

Looks like somebody closed the issue on github after importing from
lighthouse without solving the issue

or explaining why it will not be solved.

On Jun 6, 7:07pm, Brad P. [email protected] wrote:

validates_with is not really the solution. Aggregations are semantically the
same as has_one relations and should be able to validate
the same as.

Looks like somebody closed the issue on github after importing from
lighthouse without solving the issue

validates_associated throws 'can't modify frozen object' error · Issue #727 · rails/rails · GitHub

or explaining why it will not be solved.

Not sure I agree.

All the imported issues were closed automatically at some point - it
wasn’t a reflection on the merit of those issues

Fred

I guess I’ll open it up again then :slight_smile:

I opened a github ticket on this issue