2010-11-03 82 views
0

我有我的形式爲什麼我的Rails表單中的額外字段沒有保存到數據庫表中?

<% form_tag users_path, :id => 'registrationForm' do %> 
    <div class="formElement"> 
    <label for="emailAddress">Email Address</label> 
    <input name="user[email]" type="text"> 
    </div> 
    <div class="formElement"> 
    <label for="password">Password</label> 
    <input id="password" name="user[password]" type="password"> 
    </div> 
    <div class="formElement"> 
    <label for="passwordConfirmation">Re-Enter Password</label> 
    <input id="passwordConfirmation" name="user[password_confirmation]" type="password"> 
    </div> 

    <div class="formElement right"> 
    <input name="commit" value="Create" type="submit"> 
    </div> 
<% end %> 

,然後我控制器的方法來處理這其中包含

@user = User.new(params[:user]) 
@user.save do |result| 
    ... 
end 

這工作得很好。不過,如果我加上「FIRST_NAME」和我的數據庫表的「姓氏」字段,並添加

<div class="formElement"> 
    <label for="firstName">First Name</label> 
    <input id="firstName" name="user[first_name]" type="text" /> 
</div> 
<div class="formElement"> 
    <label for="lastName">Last Name</label> 
    <input id="lastName" name="user[last_name]" type="text" /> 
</div> 

我的形式,我得到

Mysql::Error: Column 'last_name' cannot be null: INSERT INTO users (salt , ship_address_id , created_at , single_access_token , last_request_at , bill_address_id , crypted_password , remember_token_expires_at , updated_at , perishable_token , api_key , failed_login_count , current_login_ip , openid_identifier , current_login_at , last_name , remember_token , persistence_token , login_count , last_login_ip , last_login_at , login , email , first_name) VALUES('gPa4FNsPHbfxLz1FTZJ8', NULL, '2010-11-03 18:07:24', 'INl0QTDduoCKSdLLXEqb', '2010-11-03 18:07:24', NULL, '900d7300768651e4814ca16b1dd39b85e8111c92a63d366c82e3f1d501dc7b85efc060bc2032e55e4405fe33b0883b0ad586fe47e99261b046a34a8b9d785333', NULL, '2010-11-03 18:07:24', 'r8YSPUfKsmbIIJryvz5C', NULL, 0, '127.0.0.1', NULL, '2010-11-03 18:07:24', NULL, NULL, 'd4fe33e9c1bde5e2468d74d3dc1de28089f565d7e0d39584690452547be6d3bbf529e9ac118575529f34e377cce315697538c64b19f799e386d6977a8f37912e', 1, NULL, NULL, '[email protected]', '[email protected]', NULL)

這裏的錯誤頁面,說是傳遞的參數:

{"commit"=>"Create", "authenticity_token"=>"tFpn+DGMU3VfeaSrc5ckVoVCxfy76Xm0Mqf8Jx8JEFs=", "user"=>{"password_confirmation"=>"test", "last_name"=>"User3", "password"=>"test", "first_name"=>"Test3", "email"=>"[email protected]"}}

任何想法,爲什麼我得到這個MySQL錯誤?

回答

3

您是否在User模型中使用attr_accessibleattr_protected來防範大規模分配攻擊?

+0

attr_accessible是問題所在。非常感謝你! – 2010-11-04 01:04:28

+0

非常好,我很高興你把它整理出來。 – 2010-11-04 08:55:33

相關問題