Zeu*_*Zeu 0 ruby mysql ruby-on-rails
我想在rails和mysql上使用ruby编写一个简单的测试程序但是,在这个时候,我无法更新数据库记录.因为在这种情况下我使用"mid"替换"id"列,我可以做些什么来更新记录呢?
问题:
Mysql::Error: Unknown column 'id' in 'where clause': UPDATE `messages` SET `message` = 'ccc', `subject` = 'aaa', `author` = 'bbb' WHERE `id` = NULL
Run Code Online (Sandbox Code Playgroud)
我的代码:
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
Run Code Online (Sandbox Code Playgroud)
数据库:
CREATE TABLE `demo_development`.`message` (
`mid` MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`subject` VARCHAR( 30 ) NOT NULL ,
`author` VARCHAR( 30 ) NOT NULL ,
`message` TEXT NOT NULL ,
`adddate` INT UNSIGNED NOT NULL
) ENGINE = MYISAM ;
Run Code Online (Sandbox Code Playgroud)
您需要告诉ActiveRecord您的主键不是'id'的约定.
使用"set_primary_key"方法.
class User < ActiveRecord::Base
set_primary_key :mid
end
Run Code Online (Sandbox Code Playgroud)
记录在这里:http://api.rubyonrails.org/classes/ActiveRecord/Base.html#M002290
| 归档时间: |
|
| 查看次数: |
571 次 |
| 最近记录: |