2013-03-26 61 views
0

我從移動的Rails 2.2.2應用到Rails 3.我有一個用來更新用戶的信息,這是在梁2全功能,但在Rails的休息形式3的Rails 3和update_attributes方法

當提交表單時,一個方法調用時造成的用戶對象,然後試圖做這樣的更新:

if @user.update_attributes params[:user] ## line 126 

然後控制器拋出此異常:

undefined method `update_attributes' for #<ActiveRecord::Relation:0xacfc178> 

in: app/controllers/admin_controller.rb:126:in `save_user' 

所以升Rails 3中的ActiveRecord等類似的對象正在返回不同類型的對象?一個不會繼承update_attributes?我該如何解決?

這裏是有問題的充分的控制器方法:

def save_user 
@needs_password_gen = "YES" 
@user = B2bUser.where("id = ?",params[:id]) 

@needsAPICredentials = false 

##### Make sure thay gave us an email address 
if !params[:user][:email] || !validEmailAddress(params[:user][:email].to_s) 
    flash[:warning] = "Valid email address is required." 
    redirect_to :controller => "admin/edit_user/#{@user.id}" and return 
end 

@user.first.update_attributes params[:user] 

THANKS

+1

可以粘貼代碼從控制器?而不是單線。 – 2013-03-26 12:35:04

+1

'update_attributes'使用單個記錄而不是集合,@user是如何定義的? – siekfried 2013-03-26 12:41:02

+0

try @ user.first.update_attributes params [:user] – 2013-03-26 12:47:53

回答

1

看起來你@user對象可以是一個數組。您可能正在使用:在哪裏查詢並忘記將其從數組中彈出。試試這個:

@user.first.update_attributes params[:user] 
+0

感謝您的建議。它返回這個:不能批量分配受保護的屬性:名稱,公司,電子郵件,用戶名,密碼,api_password,api_username,send_email_reminders,is_admin我更新了我的問題,使它現在包含發生錯誤的控制器方法 – Slinky 2013-03-26 17:00:52

+0

確保您的哈希中的所有字段都在您的用戶模型中用attr_accessible打開。您也可以在選定的字段上編輯傳入哈希和update_attribute。 – jbearden 2013-03-26 19:49:26