我是Rails 3.1的新手。我只在我的生产环境中遇到一个问题,我的注册表格(实际上,它更多的是关于控制器)。
以下是用户
中的代码class UsersController < ApplicationController
[...]
def create
@user = User.new(params[:user])
logger.info "value of login in param : #{params[:user][:login]}" #-> log the actual login
logger.info "value of login : #{@user.login}" #-> log empty
@user.admin = false
if @user.save
flash[:notice] = t('flash.notice.user.create.valid')
redirect_back_or_default root_path
else
flash[:notice] = t('flash.notice.user.create.invalid')
render :action => :new
end
end
end
此外,控制器日志显示params散列是好的
Parameters: {"utf8"=>"✓",
"authenticity_token"=>"QwOqmp0CT/d4mmC1yiLT4uZjP9bNDhbUXHanCQy5ZrA=",
"user"=>{"login"=>"myLogin",
"email"=>"t.r@gmail.com",
"password"=>"[FILTERED]",
"password_confirmation"=>"[FILTERED]"}}
我的登录表单按预期工作(已创建的用户可以登录)
同样,这只发生在制作中。
编辑:这是我的用户模型
class User < ActiveRecord::Base
acts_as_authentic
#== Callbacks
before_create :set_defaults
attr_accessible :avatar ##### EDIT: TO FIX THE ISSUE, ADD THE OTHER FIELDS AS WELL
protected
def set_defaults
self.total_1 = self.total_2 = self.total_3 = 0
end
end
答案 0 :(得分:1)
只是为了纪念上述评论的答案:
通常,您可以使用质量分配来设置模型上的字段,但是当您使用attr_accessible
时,则仅限于批量分配这些字段。所以像User.new(params[:user])
这样的东西是行不通的;相反,你必须这样做:
@user = User.new
@user.login = params[:user][:login]
# ...etc.
@user.save
简单地将您的字段添加到attr_accessible
列表,然后您可以返回批量分配。