2009-07-26 3 views
0

ruby​​ on railとmysqlを使って簡単なテストプログラム を書いていますが、今回はデータベースレコードを更新できません。 "mid"を使用して "id"列 を置き換えたので、レコードを更新するにはどうすればよいですか?RoR Update DBレコードについて

問題:

Mysql::Error: Unknown column 'id' in 'where clause': UPDATE `messages` SET `message` = 'ccc', `subject` = 'aaa', `author` = 'bbb' WHERE `id` = NULL 

マイコード:あなたはActiveRecordのを指示する必要があり

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 ; 

答えて

5

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 

データベースあなたのプライマリキーは 'id'の規則ではないということです。

「set_primary_key」メソッドを使用します。

class User < ActiveRecord::Base 
    set_primary_key :mid 
end 

ここに文書化:http://api.rubyonrails.org/classes/ActiveRecord/Base.html#M002290

関連する問題