关于资料库的操作疑问

初入门 Ruby On Rails,遇到了很多问题,
通过Google大神,也解决了很多对自己来说是难题的问题.
不过关于这问题,找了很多次也没法解开,所以只好来求教于高人

因为在写的程式,其中一个表,不是以 id 作为自动递增的主键,而是使用 mid
所以下面的程式码在执行时便发生了找不到所属于 id 的值的错误

不知道这问题该如何解决呢?试过了 update_all 这方法,不过出来还是有带 id..
所以只好发问,请教一下

问题:
[code="ruby"]Mysql::Error: Unknown column 'id' in 'where clause': UPDATE messages SET message = 'ccc', subject = 'aaa', author = 'bbb' WHERE id = NULL[/code]

代码:
[code="ruby"]def update
@message = Message.find(:first, :conditions => ["mid = ?", params[:id]])
if @message.update_attributes(params[:message])
flash[:notice] = 'Post was successfully updated.'
redirect_to gbook_path(:id => @message.mid)
else
format.html { render :action => "edit" }
end
end[/code]

可以用set_primary_key来设置主键
[code="java"]

class Message < ActiveRecord::Base
set_primary_key :mid
end
[/code]

为什么要不用id做主键?
是遗留数据?