Subject line states the question. I''m adding the following to an ActiveRecord class: class Institution < ActiveRecord::Base # list of associations has_and_belongs_to_many(:license_types) attr_accessor :tmp_license_types public def initialize(attributes = nil) super(attributes) @tmp_license_types = Array.new self.license_types.each { |lt| self.tmp_license_types << lt } end The problem is that if I try to access this attribute in my controller I keep getting a nil object error. Also, I tried calling <%= debug(@institution) %> in my view an this extra attribute that I added is not being reported. Any ideas? Thanks, Steven -- Posted via http://www.ruby-forum.com/.
Steven Hansen
2005-Nov-24 15:51 UTC
Re: Adding custom attributes to an ActiveRecord object
Re: Adding Additional Attributes to ActiveRecord? I found the answer to my question, and will post it here in case anyone else has this problem. Overiding the initialize() function can cause problems with ActiveRecord. You should instead define Code: def after_initialize # stuff end -Steven -- Posted via http://www.ruby-forum.com/.
Douglas De Couto
2005-Nov-25 13:51 UTC
Re: Adding custom attributes to an ActiveRecord object
I am having this problem. I wanted to write a custom initializer that takes some arguments, but of course, everything puked. I thought this would work: class Foo < AcitveRecord::Base initialize(some_arg) super @my_var1 = somer_arg.something @my_var2 = somer_arg.something_els end end Why doesn''t the call to super() make sure that all the ActiveRecord initialization is correctly setup? I like the after_initialize_trick, although it doesn''t fix my problem; instead I''ve created a factory method self.build_new_foo(some_args). - Doug rooster wrote:> Re: Adding Additional Attributes to ActiveRecord? > > I found the answer to my question, and will post it here in case anyone > else has this problem. > Overiding the initialize() function can cause problems with > ActiveRecord. > > You should instead define > Code: > def after_initialize > # stuff > > end > > -Steven-- Posted via http://www.ruby-forum.com/.
Steven Hansen
2005-Nov-25 20:56 UTC
Re: Adding custom attributes to an ActiveRecord object
I believe the ActiveRecord initialize method is expecting an argument.......check source from svn. Anyway, if you''re going to overide initialize and you want to make sure everything gets setup right, do: def initialize(attributes = nil) super(attributes) end Douglas De Couto wrote:> I am having this problem. I wanted to write a custom initializer that > takes some arguments, but of course, everything puked. I thought this > would work: > > class Foo < AcitveRecord::Base > initialize(some_arg) > super > @my_var1 = somer_arg.something > @my_var2 = somer_arg.something_els > end > end > > Why doesn''t the call to super() make sure that all the ActiveRecord > initialization is correctly setup? I like the after_initialize_trick, > although it doesn''t fix my problem; instead I''ve created a factory > method self.build_new_foo(some_args). > > - Doug > > rooster wrote: >> Re: Adding Additional Attributes to ActiveRecord? >> >> I found the answer to my question, and will post it here in case anyone >> else has this problem. >> Overiding the initialize() function can cause problems with >> ActiveRecord. >> >> You should instead define >> Code: >> def after_initialize >> # stuff >> >> end >> >> -Steven-- Posted via http://www.ruby-forum.com/.