为什么此验证代码中的此变量为空?
问题描述:
我正在使用Devise,并且正在尝试设置用户必须输入才能注册的邀请代码。我有这样的代码在我的用户模型:为什么此验证代码中的此变量为空?
attr_accessor :invite_code
validates_each :invite_code, :on => :create do |record, attr, value|
record.errors.add attr, "is wrong" unless value == "12345"
end
这个文本字段:
<%= f.text_field :invite_code %>
的问题是,value
永远是空的,所以验证总是失败,即使邀请码“12345”。
我猜这可能与包含文本字段的文件不在用户目录中,而是在单独的注册目录中(我在设置omniauth时从以下this railscast执行此操作)有关。我真的不确定。我该如何解决?
下面是详细信息:
这是我的routes.rb:
devise_for :users, :controllers => { :registrations => 'registrations'}
这是我的用户控制器:
def new
@user = User.new
end
def create
@user = User.new(params[:user])
if @user.save!
redirect_to videos_path
else
render :action => 'new'
end
end
这是我的注册控制器:
def create
super
session[:omniauth] = nil unless @user.new_record?
end
答
所以问题是,除了attr_accessor :invite_code
,我需要attr_accessible :invite_code
以及
答
我相信value
作为一个数组传递。所以..
record.errors.add attr, "is wrong" unless value[0] == "12345"
应该工作。
你介意张贴的控制器代码? – natedavisolds 2011-06-11 04:09:39
用户控制器或注册控制器? – 2011-06-11 04:11:52
我发布了........ – 2011-06-11 04:15:30