Model navigation problem with foreign key

Hi,
I have a table like this in schema.rb

create_table “ac_rooms”, :force => true do |t|
t.column “roomname”, :string, :limit => 50, :default => “”, :null =>
false
t.column “updated”, :float, :default => 0.0, :null => false
t.column “lines”, :integer, :limit => 8, :default => 0, :null =>
false
t.column “created_at”, :datetime
end

and another in migration like this

def self.up
create_table :line_msgs do |t|
t.column :sender_nick, :string
t.column :content, :string
t.column :room_id, :integer, :null => false
t.column :send_at, :timestamp
end

execute "alter table line_msgs
                  add constraint fk_line_msg_rooms
                  foreign key (room_id) references ac_rooms(id)"

end

and i added the belongs_to :ac_room in line_msg.rb and has_many:
:line_msgs to ac_room.rb in the model, but when i did

room = AcRoom.find(…)
<%= render(:partial => “line_msg”, :collection => room.line_msgs) %>

but i get error

Mysql::Error: #42S22Unknown column ‘line_msgs.ac_room_id’ in ‘where
clause’: SELECT * FROM line_msgs WHERE (line_msgs.ac_room_id = 6)

my question is why rails make it into line_msgs.ac_room_id but not
line_msgs.room_id, is there some stupid things i did, thanks.
Excuse me for my poor english

Jia Liu wrote:

                  foreign key (room_id) references ac_rooms(id)"

Mysql::Error: #42S22Unknown column ‘line_msgs.ac_room_id’ in ‘where
clause’: SELECT * FROM line_msgs WHERE (line_msgs.ac_room_id = 6)

my question is why rails make it into line_msgs.ac_room_id but not
line_msgs.room_id, is there some stupid things i did, thanks.
Excuse me for my poor english

If you want Rails to use room_id as the foreign key, rather than
the default ac_room_id, you have to write the belongs_to as:

belongs_to :ac_room, :foreign_key => ‘room_id’


We develop, watch us RoR, in numbers too big to ignore.