# Update \_attribtutes fails to update, please help!

**URL:** <https://www.ruby-forum.com/t/update-attribtutes-fails-to-update-please-help/151237>\
**Category:** Rails\
**Created:** [October 18, 2008, 6:18pm UTC](https://www.ruby-forum.com/t/update-attribtutes-fails-to-update-please-help/151237 "2008-10-18T18:18:39Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![rvruby](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ecccb3/32.png) [@rvruby](https://www.ruby-forum.com/u/rvruby)\
**Post date:** [October 18, 2008, 6:18pm UTC](https://www.ruby-forum.com/t/update-attribtutes-fails-to-update-please-help/151237/1 "2008-10-18T18:18:39Z")

</div>

I am trying to update a leave but the update does not work. Please let  
me know where I am making the mistake.(Looked in to the log, id in the  
update SQL statment shows NULL)

View

# Editing Leaves
\<% form\_for :leaves, @leaves, :url =\> { :controller =\> "leaves", :action =\> "update" } do |f| %\> \<%= f.text\_field :id%\> **Leave Type** \<%= f.text\_field :LEAVE\_TYPE %\>  

**FROM\_DATE**  
\<%= f.text\_field :FROM\_DATE %\>

**TO Date**  
\<%= f.text\_field :TO\_DATE %\>

**Phone Number**  
\<%= f.text\_field :PHONE\_NUMBER %\>

**Address**  
\<%= f.text\_field :ADDRESS %\>

**Reason for Leave**  
\<%= f.text\_area :REASON\_FOR\_LEAVE %\>

```
<%= f.submit "update" %>

```

\<% end %\>  
\<%= error\_messages\_for :leaves %\>

Controller’s update method  
def update  
@leaves=Leave.find(params[:id])  
if @leaves.update\_attributes(params[:leave])  
#~ puts(@leaves.ID)  
flash[:notice] = ‘Leave was successfully updated.’  
redirect\_to :action =\> ‘show’, :id =\> @leaves.ID  
else  
render :action =\> ‘edit’  
end  
end

I looked in to the log and looks like the id in update statement is  
going NULL what could be the problem for this and how can I fix this.

[0mSELECT \* FROM `leaves` WHERE (`leaves`.`id` = ‘2’) [0m  
[4;36;1mSQL (0.000000) [0m [0;1mBEGIN [0m  
[4;35;1mLeave Update (0.000000) [0m [0mUPDATE `leaves` SET  
`FROM_DATE` = ‘2008-11-05’, `REASON_FOR_CANCELLATION` = NULL, `BACKUP`  
= NULL, `EMP_ID` = 90268, `TO_DATE` = ‘2008-11-09’, `ADDRESS` = NULL,  
`MGR_EMP_ID` = 90000, `MANAGER_COMMENTS` = NULL, `REASON_FOR_LEAVE` =  
NULL, `LEAVE_TYPE` = ‘leave’, `ID` = 2, `APPLIED_ON_DATE` =  
‘2008-09-15’, `PHONE_NUMBER` = NULL, `LEAVE_STATUS` = ‘PENDING’ WHERE  
`id` = NULL

---

<div class="post-metadata">

**Author:** ![rvruby](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ecccb3/32.png) [@rvruby](https://www.ruby-forum.com/u/rvruby)\
**Post date:** [October 18, 2008, 6:19pm UTC](https://www.ruby-forum.com/t/update-attribtutes-fails-to-update-please-help/151237/2 "2008-10-18T18:19:15Z")

</div>

On Oct 18, 5:15 pm, rvruby [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> I am trying to update a leave but the update does not work. Please let  
> me know where I am making the mistake.(Looked in to the log, id in the  
> update SQL statment shows NULL)
> 
> View
> 
> # Editing Leaves
> \<% form\_for :leaves, @leaves, :url =\> { :controller =\> "leaves", :action =\> "update" } do |f| %\> \<%= f.text\_field :id%\>

That’s really not a good idea. remove that text field.

Fred

---

<div class="post-metadata">

**Author:** ![rvruby](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ecccb3/32.png) [@rvruby](https://www.ruby-forum.com/u/rvruby)\
**Post date:** [October 18, 2008, 9:55pm UTC](https://www.ruby-forum.com/t/update-attribtutes-fails-to-update-please-help/151237/3 "2008-10-18T21:55:05Z")

</div>

I included the \<%= f.text\_field :id%\> just to verify. Even after I  
removed it, it does not work.

Please help.

Processing LeavesController#update (for 127.0.0.1 at 2008-10-19  
01:18:59) [POST]  
Session ID:  
BAh7CjoRZW1wc21ncmVtcGlkaQOQXwE6DGNzcmZfaWQiJTViZTdjMmU1ZDk1%0AZWRlODc5OTM2YjMzMjdiNWRjNTc5OgplbXBpZCIKOTAyNjgiCmZsYXNoSUM6%0AJ0FjdGlvbkNvbnRyb2xsZXI6OkZsYXNoOjpGbGFzaEhhc2h7AAY6CkB1c2Vk  
%0AewA6DG1ncm5hbWUiF2Jvc3NmbmFtZWJvc3NsbmFtZQ%3D  
%3D–1afd388b96433710a23047adc0f38b57c3422517  
Parameters: {“commit”=\>“update”,  
“authenticity\_token”=\>“949d78977aa51943832f36c2768c785f8d5bbbc7”,  
“action”=\>“update”, “id”=\>“4”, “leaves”=\>{“TO\_DATE”=\>“2008-12-31”,  
“FROM\_DATE”=\>“2008-12-30”, “LEAVE\_TYPE”=\>“compoff”,  
“REASON\_FOR\_LEAVE”=\>“Updated Reason for leave”, “PHONE\_NUMBER”=\>“”,  
“ADDRESS”=\>“”}, “controller”=\>“leaves”}  
[4;36;1mLeave Columns (0.000000) [0m [0;1mSHOW FIELDS FROM  
`leaves` [0m  
[4;35;1mLeave Load (0.000000) [0m [0mSELECT \* FROM `leaves`  
WHERE (`leaves`.`id` = ‘4’) [0m  
[4;36;1mSQL (0.000000) [0m [0;1mBEGIN [0m  
[4;35;1mLeave Update (0.000000) [0m [0mUPDATE `leaves` SET  
`FROM_DATE` = ‘2008-12-30’, `REASON_FOR_CANCELLATION` = NULL, `BACKUP`  
= NULL, `EMP_ID` = 90268, `TO_DATE` = ‘2008-12-31’, `ADDRESS` = NULL,  
`MGR_EMP_ID` = 90000, `MANAGER_COMMENTS` = NULL, `REASON_FOR_LEAVE` =  
NULL, `LEAVE_TYPE` = ‘compoff’, `ID` = 4, `APPLIED_ON_DATE` =  
‘2008-11-28’, `PHONE_NUMBER` = NULL, `LEAVE_STATUS` = ‘PENDING’ WHERE  
`id` = NULL

On Oct 18, 9:18 pm, Frederick C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![rvruby](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ecccb3/32.png) [@rvruby](https://www.ruby-forum.com/u/rvruby)\
**Post date:** [October 18, 2008, 9:58pm UTC](https://www.ruby-forum.com/t/update-attribtutes-fails-to-update-please-help/151237/4 "2008-10-18T21:58:01Z")

</div>

Is your primary key column not called id? If so you need to use  
set\_primary\_key

Sent from my iPhone

---

<div class="post-metadata">

**Author:** ![rvruby](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ecccb3/32.png) [@rvruby](https://www.ruby-forum.com/u/rvruby)\
**Post date:** [October 18, 2008, 10:10pm UTC](https://www.ruby-forum.com/t/update-attribtutes-fails-to-update-please-help/151237/5 "2008-10-18T22:10:55Z")

</div>

in my table ID is the primary key, what surprises me is, in the dev  
log there is a ID and id with values 4 and null

UPDATE `leaves` SET `FROM_DATE` = ‘2008-12-30’,  
`REASON_FOR_CANCELLATION` = NULL, `BACKUP`  
= NULL, `EMP_ID` = 90268, `TO_DATE` = ‘2008-12-31’, `ADDRESS` = NULL,  
`MGR_EMP_ID` = 90000, `MANAGER_COMMENTS` = NULL, `REASON_FOR_LEAVE`  
=NULL, `LEAVE_TYPE` = ‘compoff’, `ID` = 4, `APPLIED_ON_DATE`  
=‘2008-11-28’, `PHONE_NUMBER` = NULL, `LEAVE_STATUS` = ‘PENDING’ WHERE  
`id` = NULL  
Thanks for your help.

On Oct 19, 12:57 am, Frederick C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![rvruby](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ecccb3/32.png) [@rvruby](https://www.ruby-forum.com/u/rvruby)\
**Post date:** [October 19, 2008, 1:47am UTC](https://www.ruby-forum.com/t/update-attribtutes-fails-to-update-please-help/151237/6 "2008-10-19T01:47:01Z")

</div>

Sent from my iPhone

On 18 Oct 2008, at 21:10, rvruby [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> in my table ID is the primary key, what surprises me is, in the dev  
> log there is a ID and id with values 4 and null  
> id is not the same as ID

Fred

---

<div class="post-metadata">

**Author:** ![rvruby](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ecccb3/32.png) [@rvruby](https://www.ruby-forum.com/u/rvruby)\
**Post date:** [October 18, 2008, 10:36pm UTC](https://www.ruby-forum.com/t/update-attribtutes-fails-to-update-please-help/151237/7 "2008-10-18T22:36:08Z")

</div>

I renamed the ID column to “id” and now instead of NULL I see value in  
the dev log for the update query. Not getting updated yet, but I think  
I will nail it down. Thanks for the help.
