Changing primary.. Rails/mysql


#1

I am using Rails 2.0.2 with mysql database
Migrate sets the primary key to id.
Is it possible to change it to another column?
If yes, how?
Thanks for your help

Cypray.


#2

First thing I would ask is “why?” What is the reason behind the
change?


#3

Well, I am having trouble with this query:

class Author < ActiveRecord::Base

has_many :books

def author_age
@results = Author.find :all, :conditions => [“age = ?”,
params[:authors]]
end
end

I have this on view\authors\show.html

<% @results.each do |result| %>

Author Name

Age

<%=h @result.name %> <%=h @result.age %>

I am getting this error: “You have a nil object when you didn’t
expect it!”
The log shows “NULL” for the selected age whose value should be passed
in as the condition for the query.

So, I wanted to change the primary key just to see if it might make any
difference. I don’t know what is wrong with the query.
In SQL, the query is like this:
SELECT name, age FROM author WHERE age = “the user selected age”

Cypray.

Bobnation wrote:

First thing I would ask is “why?” What is the reason behind the
change?


#4

On Fri, Dec 5, 2008 at 10:50 PM, Jay M.
removed_email_address@domain.invalidwrote:

end

<% @results.each do |result| %>

<%=h @result.name %> <%=h @result.age %>

Hi, in the above HTML, you should be using result instead of @result.
For
example,

<%=h result.name %> <%=h result.age %>

Good luck,

-Conrad


#5

On Fri, Dec 5, 2008 at 10:50 PM, Jay M.
removed_email_address@domain.invalid wrote:

def author_age
@results = Author.find :all, :conditions => [“age = ?”,
params[:authors]]
end

I am getting this error: “You have a nil object when you didn’t
expect it!”
The log shows “NULL” for the selected age whose value should be passed
in as the condition for the query.

So, I wanted to change the primary key just to see if it might make any
difference. I don’t know what is wrong with the query.

Change the primary key? Why not repaint your bedroom? Maybe
put new tires on the car? :slight_smile:

I already told you in another thread: params[:authors] IS NOT the
value you think it is. You are NOT PASSING a valid value for “age”
so of course the result set is empty, giving you a nil @results.

Your form doesn’t match up with your code. That’s the problem.


Hassan S. ------------------------ removed_email_address@domain.invalid