我对Rails 3.1有点新。而且我只是在我的制作环境中使用我的注册表单面临问题(实际上,它更多地是关于控制器)。在UsersController#create,User.new(params [:user])返回一个空的用户(params看起来不错)
这里是用户代码
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"=>"[email protected]",
"password"=>"[FILTERED]",
"password_confirmation"=>"[FILTERED]"}}
我的登录表单将按预期(已经创建的用户可以登录in)
再一次,这只发生在生产中。
编辑:这是我的用户模型
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
您在'User'模型中使用'attr_accessible'并且不在列表中包含'login'的任何机会?它只是空的“登录”字段,还是所有的字段都是空的?如果你发布你的'用户'模型,它可能会给我们更多的信息 –
我将模型添加到我的问题。我的模型非常简单。唯一值得注意的是Auth_logic。我的所有领域都是空的,不仅仅是登录。这很奇怪,因为它只发生在生产环境中,而不是环境设备上。 – Thomas
你回答了我的问题。我有保存用户头像的回形针,需要attr_accessible。我天真地只将该字段添加到列表中,而不知道它是用于批量分配的白名单。我修好了它。非常感谢你,你保存了我的编码夜会。 – Thomas