On 23 Dec 2008, at 14:04, lee.longm...@googlemail.com wrote:
> > I have checked for method/association name clashes and can't see any. > Any tips on how I might debug this further would be very much > appreciated - I am completely stuck! You could start by showing the code in your model. If you've got any plugins you're using it's worth making sure they aren't the problem Fred > > > To recap, I am getting the error "undefined method `each' for > true:TrueClass" when an Active Record method (in active_record/base.rb > - see below) is being executed. So I assume 'attribute_names' is being > set to true for some reason. > > # Returns a copy of the attributes hash where all the values > have been safely quoted for use in > # an SQL statement. > def attributes_with_quotes(include_primary_key = true, > include_readonly_attributes = true, attribute_names = > @attributes.keys) > quoted = {} > connection = self.class.connection > attribute_names.each do |name| > if (column = column_for_attribute(name)) && > (include_primary_key || !column.primary) > value = read_attribute(name) > > # We need explicit to_yaml because quote() does not > properly convert Time/Date fields to YAML. > if value && self.class.serialized_attributes.has_key? > (name) && (value.acts_like?(:date) || value.acts_like?(:time)) > value = value.to_yaml > end > > quoted[name] = connection.quote(value, column) > end > end > include_readonly_attributes ? quoted : > remove_readonly_attributes(quoted) > end > > On 20 Dec, 14:26, Frederick Cheung <frederick.che...@gmail.com> wrote: >> On Dec 20, 1:52 pm, >> "lee.longm...@googlemail.com"<lee.longm...@googlemail.com> wrote: >>> To add, I am seeing the following when I retrieve an existing Root >>> object in the Rails console and then try to save it again: >> >> My guess would be that you have a method or an association with a >> name >> that has since been used internally by activerecord. If you can show >> more of your model someone might be able to spot the troublemaker. >> >> Fred >> >>> => #<Root id: 1, type: "Root", name: "Base of Administrator", >>> yaml_container: nil, parent_id: nil, owner_id: 1, custodian_id: 1, >>> property_control_id: 1, include_parent_responses: false, >>> inheritable: >>> false, response_vehicle_id: nil, acquire_child_values: false, >>> description: nil, rating: nil, link_base_id: nil, base_image_id: >>> nil, >>> event_when_id: nil, event_description_id: nil>>> root.save >> >>> NoMethodError: undefined method `each' for true:TrueClass >>> from /usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/ >>> active_record/ >>> base.rb:2808:in `attributes_with_quotes' >>> from /usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/ >>> active_record/ >>> base.rb:2706:in `update_without_lock' >>> from /usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/ >>> active_record/ >>> locking/optimistic.rb:70:in `update_without_dirty' >>> from /usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/ >>> active_record/ >>> dirty.rb:146:in `update_without_callbacks' >>> from /usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/ >>> active_record/ >>> callbacks.rb:253:in `update_without_timestamps' >>> from /usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/ >>> active_record/ >>> timestamp.rb:38:in `update' >>> from /usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/ >>> active_record/ >>> base.rb:2699:in `create_or_update_without_callbacks' >>> from /usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/ >>> active_record/ >>> callbacks.rb:222:in `create_or_update' >>> from /usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/ >>> active_record/ >>> base.rb:2383:in `save_without_validation' >>> from /usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/ >>> active_record/ >>> validations.rb:1009:in `save_without_dirty' >>> from /usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/ >>> active_record/ >>> dirty.rb:79:in `save_without_transactions' >>> from /usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/ >>> active_record/ >>> transactions.rb:179:in `send' >>> from /usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/ >>> active_record/ >>> transactions.rb:179:in `with_transaction_returning_status' >>> from /usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/ >>> active_record/ >>> connection_adapters/abstract/database_statements.rb:66:in >>> `transaction' >>> from /usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/ >>> active_record/ >>> transactions.rb:129:in `transaction' >>> from /usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/ >>> active_record/ >>> transactions.rb:138:in `transaction' >>> from /usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/ >>> active_record/ >>> transactions.rb:178:in `with_transaction_returning_status' >>> from /usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/ >>> active_record/ >>> transactions.rb:146:in `save' >>> from /usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/ >>> active_record/ >>> transactions.rb:158:in `rollback_active_record_state!' >>> from /usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/ >>> active_record/ >>> transactions.rb:146:in `save' >> >>> Any thoughts much appreciated. >> >>> On 20 Dec, 06:54, "lee.longm...@googlemail.com" >> >>> <lee.longm...@googlemail.com> wrote: >>>> I have been working through an upgrade of my 1.2.6 application to >>>> 2.2.2. >> >>>> I am almost there but I have hit a problem with ActiveRecord. >> >>>> Before the upgrade, the following code was working fine. >> >>>> def create_root(administrator) >>>> root = create_root_collection(self.pingee_name, >>>> administrator, >>>> GlobalAccessibility.new, >>>> OwnerAccessibility.new) >>>> root.save >>>> self.root = root >>>> end >> >>>> But now I get am getting an exception "undefined method `each' for >>>> true:TrueClass" when root.save is executed. >> >>>> fyi, the "create_root_collection" method creates a "root" object >>>> and >>>> assigns new object to its "belongs to" association. >> >>>> I have traced it through carefully and it is definitely failing >>>> when >>>> trying to save the "root" object itself. >> >>>> Given the error message, and the fact that the root object contains >>>> boolean columns, I wonder if the problem is to do with the saving >>>> boolean values. I am using MySQL and declaring the boolean >>>> columns in >>>> the following way (using raw SQL not migrations currently): >> >>>> include_parent_responses boolean default false not null, >> >>>> Is the "boolean" column type still valid? >> >>>> Thanks! > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk@googlegroups.com To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---