# Updating the mysql record without id feild

**URL:** <https://www.ruby-forum.com/t/updating-the-mysql-record-without-id-feild/153617>\
**Category:** Rails\
**Created:** [November 19, 2008, 12:53pm UTC](https://www.ruby-forum.com/t/updating-the-mysql-record-without-id-feild/153617 "2008-11-19T12:53:02Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![hema\_mca](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/779978/32.png) [@hema\_mca](https://www.ruby-forum.com/u/hema_mca)\
**Post date:** [November 19, 2008, 12:53pm UTC](https://www.ruby-forum.com/t/updating-the-mysql-record-without-id-feild/153617/1 "2008-11-19T12:53:02Z")

</div>

Hi All,  
I need to update the records in the mysql with the data  
fields  
from the xml where the id field not presented in the database,  
instead we took the number as primary key but not auto\_incremented.

I treid with many attempts  
for example my view as follows …

# Editing employee
\<% form\_tag :action =\>'update',:id =\> @employee.number do -%\>  
  
  
  
  
  
  
  
  

| \<%= label 'Employ\_No','Employee Number' %\> | \<%= text\_field 'employee','number',:value =\> @employee.number,:size =\> "16",:maxlength =\> "20",:id=\>'number' %\>

```
        </td>
  </tr>
  <tr>
        <td>
          <%= label 'Employ_Name','Employee Name' %>
        </td>
        <td>
           <%= text_field 'employee','name',:value => 

```

@employee.name,:size  
=\> “16”,:maxlength =\> “20”,:id=\>“employ\_name” %\>

 |
|   
\<%= label ‘Employ\_Job’,‘Employee Job’ %\>  
 |   
\<%= text\_field ‘employee’,‘job’,:value =\>  
@employee.job,:size =\>  
“16”,:maxlength =\> “20”,:id=\>“employ\_job” %\>  
 |
|   
\<%= label ‘Employ\_Salary’,‘Employee Salary’ %\>  
 |   
\<%= text\_field ‘employee’,‘salary’,:value =\>  
@employee.salary,:size =\> “16”,:maxlength =\> “20”,:id=\>“employ\_salary”  
%\>  
 |

 \<%= submit\_tag "Save" %\> \<% end %\>

I tried with text\_field\_tag but i found this is the right way since we  
can  
access through the params[:employee] for all values and  
params[:employee][:name] for individual fields

and in my controller

def update  
begin  
puts “In update”  
no = params[:id]  
employ = Employee.new  
employ.number = params[:employee][:number]  
employ.name = params[:employee][:name]  
employ.job = params[:employee][:job]  
employ.salary = params[:employee][:salary]  
# puts “#{params[employ\_no]}”  
puts “#{params[:employee][:employ\_no]}”  
puts “#{params[:employee][:name]}”  
puts “#{params[:id]}”

```
     employee = Employee.find(:first,:conditions => ["number = 

```

?",no])

```
      @emp = Employee.find(:first,:conditions => ["number = ?",no])

      puts "before update"

   # if @emp.update(:no,params[:employee]) then
   # puts "success"
   # reder :text => "success"
   # else
   # puts "failed"
   # render :text => "failed"
   # end

      if @emp.update_attributes(params[:employee]) then
        puts "success"
        reder :text => "success"
      else
        puts "failed"
        render :text => "failed"
      end

     # employee.update_attribute(:number,employ.number)

      puts "updated"
      #if @emp!= nil then
      # @emp.number = params[:employ_no]
       # @emp.name = params[:employ_name]
       # @emp.job = params[:employ_job]
       # @emp.salary = params[:employ_sal]
     # end
       puts "#{params[:employee]}"
       puts @emp

rescue => e
  puts "error is #{e}"
end

```

end

Where my model has only 4 fields name,number,job,salary (here number is  
the  
primary key)  
I tried with all the cases and vexed, It is througin error for each case

@emp.update(:number,params[:employee]) # ERROR : The private  
method ‘update’ called

@emp.update\_attributes(params[:employee]) # Mysql::Error: #42S22Unknown  
column ‘id’ in ‘where clause’: UPDATE `employees` SET `salary` =  
‘20000’,  
`number` = 6, `job` = ‘se’, `name` = ‘xxx’ WHERE `id` = NULL

@emp.update\_attributes(employ) # ERROR is undefined method  
`stringify\_keys!’  
for #

How to achieve the updating? Please anybody help me…

---

<div class="post-metadata">

**Author:** ![hema\_mca](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/779978/32.png) [@hema\_mca](https://www.ruby-forum.com/u/hema_mca)\
**Post date:** [November 20, 2008, 5:48am UTC](https://www.ruby-forum.com/t/updating-the-mysql-record-without-id-feild/153617/2 "2008-11-20T05:48:00Z")

</div>

Thank You Fred for your reply… I tried with the set\_primary\_key but  
still it is throwing the exception,Sorry sending the code like that i  
modified the code with removing the comments,the commented code is the  
my trails to achieve the desired.I have given the ways and the errors  
that are rendering for the particular call … Please check and excuse  
the mistakes if any,

---

<div class="post-metadata">

**Author:** ![hema\_mca](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/779978/32.png) [@hema\_mca](https://www.ruby-forum.com/u/hema_mca)\
**Post date:** [November 20, 2008, 6:35am UTC](https://www.ruby-forum.com/t/updating-the-mysql-record-without-id-feild/153617/3 "2008-11-20T06:35:58Z")

</div>

Thank You Fred  
I got it  
In model I kept the statement as  
self.primary\_key = :number

It worked… Thank you

On Nov 19, 4:59 pm, Frederick C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![hema\_mca](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/779978/32.png) [@hema\_mca](https://www.ruby-forum.com/u/hema_mca)\
**Post date:** [November 19, 2008, 1:00pm UTC](https://www.ruby-forum.com/t/updating-the-mysql-record-without-id-feild/153617/4 "2008-11-19T13:00:41Z")

</div>

On 19 Nov 2008, at 11:52, hema gonaboina wrote:

> Hi All,  
> I need to update the records in the mysql with the data  
> fields from the xml where the id field not presented in the database,  
> instead we took the number as primary key but not auto\_incremented.
> 
> I treid with many attempts  
> for example my view as follows …

Your code is pretty impenetrable by virtue of the duplication, bits  
commented out etc… but if you don’t have a primary key column you  
should be using set\_primary\_key to tell rails which column is the  
primary key

Fred
