Mind-boggling problem with update_attributes()

So I’m working on creating a migration for a new version of one of the
projects I’m working on. But Rake seems to be selectively spitting out
errors. The same code that works only a few lines up will not work
where I most need it. (That should be a law of programming…)

So here’s what’s up. I’ve got a table that stores information on the
roles that users can have. There are four columns: id, name,
parent_id, and list_priority. The big key feature that I’m
implementing in this release is the concept of permission inheritance
across roles. So, what I’ve done for some roles is the following:

puts '   -> Remove developer permissions collection'
puts '   -> Set developer parent and list_priority'
@developerRole.update_attributes(:parent_id =>

@officerRole.id, :list_priority => 5)

The migration handles that fine. However it throws an error on:

@serviceChair = Role.create :name => 'Service Chair'
@serviceChair.update_attributes(:parent_id =>

@brotherRole.id, :list_priority => 3)
@serviceChair.permissions << @op_login
@serviceChair.permissions << @op_service_fundraising

The rake error reads as follows:

rake aborted!
undefined method `list_priority=’ for #<Role id: 5, name: “Service

And, if I remove list_priority from the update_attributes method in
the second code segment, it will throw a similar error about
parent_id. Could anyone tell me what the heck is going on here? I’m
about at the end of my wits trying to figure this out.

Thanks in advance.

Matt wrote:

@brotherRole.id, :list_priority => 3)
@serviceChair.permissions << @op_login
@serviceChair.permissions << @op_service_fundraising

What (if any) is in between those two sections ? Are you changing the
roles table in this migration ? Where does @developerRole come from ?


The Roles table is being changed in this migration, but I alter the
table before I start working with the data. The two code blocks are
adjacent. The @developerRole code is immediately above it, and
@developerRole is created by

@developerRole = Role.find(:first, :conditions => {:name =>

Which happens immediately after the table alterations.

On Dec 27, 8:24 pm, Frederick C. [email protected]

In case you are modifying the Roles table (and then updating the new
you might want to reset the column information.


ModelName is your case might be Role.


On Sun, Dec 28, 2008 at 10:53 AM, Matt [email protected] wrote:

George Carlin - “Weather forecast for tonight: dark.”

That fixed my problem! Thanks!

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