# Mind-boggling problem with update\_attributes()

**URL:** <https://www.ruby-forum.com/t/mind-boggling-problem-with-update-attributes/156453>\
**Category:** Rails\
**Created:** [December 28, 2008, 12:56am UTC](https://www.ruby-forum.com/t/mind-boggling-problem-with-update-attributes/156453 "2008-12-28T00:56:43Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![matt](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/a6a055/32.png) [@matt](https://www.ruby-forum.com/u/matt)\
**Post date:** [December 28, 2008, 12:56am UTC](https://www.ruby-forum.com/t/mind-boggling-problem-with-update-attributes/156453/1 "2008-12-28T00:56:43Z")

</div>

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'
@developerRole.permissions.delete_all
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  
Chair”\>

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.

---

<div class="post-metadata">

**Author:** ![matt](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/a6a055/32.png) [@matt](https://www.ruby-forum.com/u/matt)\
**Post date:** [December 28, 2008, 2:25am UTC](https://www.ruby-forum.com/t/mind-boggling-problem-with-update-attributes/156453/2 "2008-12-28T02:25:39Z")

</div>

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 ?

Fred

---

<div class="post-metadata">

**Author:** ![matt](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/a6a055/32.png) [@matt](https://www.ruby-forum.com/u/matt)\
**Post date:** [December 28, 2008, 6:24am UTC](https://www.ruby-forum.com/t/mind-boggling-problem-with-update-attributes/156453/3 "2008-12-28T06:24:10Z")

</div>

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 =\>  
‘Developer’})

Which happens immediately after the table alterations.

On Dec 27, 8:24 pm, Frederick C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![matt](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/a6a055/32.png) [@matt](https://www.ruby-forum.com/u/matt)\
**Post date:** [December 28, 2008, 7:15am UTC](https://www.ruby-forum.com/t/mind-boggling-problem-with-update-attributes/156453/4 "2008-12-28T07:15:36Z")

</div>

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

ModelName.reset\_column\_information

ModelName is your case might be Role.

–  
Shiv

On Sun, Dec 28, 2008 at 10:53 AM, Matt [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> >

–

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

---

<div class="post-metadata">

**Author:** ![matt](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/a6a055/32.png) [@matt](https://www.ruby-forum.com/u/matt)\
**Post date:** [December 28, 2008, 4:34pm UTC](https://www.ruby-forum.com/t/mind-boggling-problem-with-update-attributes/156453/5 "2008-12-28T16:34:41Z")

</div>

That fixed my problem! Thanks!
