can't dup Fixnum ??

Hi there, Rails 2.0.1 stable, mySQL

trying to access an object created through a function call :

Model 1 : MyModel << ActiceRecord::Base ... def stats   @stats ||= MyStats.new(self.id) end ...

Model 2 : MyStats < MyModel ...   def new(id)     self.id = id     self.all   end

  def all   @all ||= OtherModel.find_by_my_model_id(self.id)   end

...

View :   <% for myModel in @list_of_myModels %> <%=debug(myModel.stats)%>

throws "can't dup Fixnum " error

likewise for : <%=debug(@list_of_myModels[0].stats)%>

I led myself here : http://dev.rubyonrails.org/changeset/7399 But I'm confused. This seems an old patch. any help appreciated.

Hi there, Rails 2.0.1 stable, mySQL

trying to access an object created through a function call :

Model 1 : MyModel << ActiceRecord::Base ... def stats   @stats ||= MyStats.new(self.id) end ...

Model 2 : MyStats < MyModel ...   def new(id)     self.id = id     self.all   end

  def all   @all ||= OtherModel.find_by_my_model_id(self.id)   end

...

View :         <% for myModel in @list_of_myModels %> <%=debug(myModel.stats)%>

throws "can't dup Fixnum " error

Nothing to do with that ticket you found.

You've overriden the instance method new, not the class method new, so when you do MyStats.new, you're calling the original ActiveRecord::Base initialize, which expects a hash of options as its argument. It dups that hash and so you get your error. Either way, don't override new. Either override initialize (and remember to call super) or use the after_initialize callback.

Fred

Also you should be overriding initialize, not new (or possibly using the after_initialize callback). , and either way you've got to call the superclass constructor, or bad stuff will happen

Fred