我試過User.create(params),但是這說「控制器」和「動作」不是可以分配的。我可以排除這些屬性,但有沒有更簡單的方法來組合我需要的屬性?從控制器參數保存Rails模型?
一些示例似乎表明我可以使用params [:user],但是如果我希望帖子只是用戶對象,則params [:user]看起來像是nil。
所以我發佈{username:'blah',密碼:'blah'},並且用戶名和密碼在params中,但不是params [:user]。
class UsersController < ApplicationController
def create
user = User.create(params[:user])
if user.save
render :json => user, :status => :created
else
logger.error user.errors
render :json => {:status => :error, :errors => user.errors}, :status => :bad_request
end
end
end
http://stackoverflow.com/questions/7376659/make-attributes-mass-assignable-only-during-creation – MrYoshiji
這甚至不是同一個問題。 –
如果你做了一個'params'的簡單輸出,你會發現它有不同的參數,比如'controller'和'action'。 'User.create(params)'將嘗試創建一個用戶併爲其分配params屬性。由於你的params有非屬性值(action,controller,commit,utf等),它不會工作,並引發Mass Assignment錯誤。 – MrYoshiji