【发布时间】:2012-12-20 14:42:30
【问题描述】:
我尝试了 User.create(params),但这表明“控制器”和“动作”不能批量分配。我可以排除这些属性,但有没有更简单的方法来编组我需要的属性?
一些示例似乎表明我可以使用 params[:user],但如果我希望帖子只是用户对象,params[:user] 看起来就像是 nil。
所以我用 {username: 'blah', password: 'blah'} 发帖,用户名和密码在参数中,但不是参数[: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
【问题讨论】:
-
这根本不是同一个问题。
-
如果你做一个简单的
params输出,你会看到它有不同的参数,比如controller和action。User.create(params)将尝试创建一个用户并为其分配参数属性。由于您的参数具有非属性值(操作、控制器、提交、utf 等),因此它不会工作并引发批量分配错误。
标签: ruby-on-rails ruby activerecord activemodel