【发布时间】:2011-06-11 03:34:03
【问题描述】:
我正在使用 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
【问题讨论】:
-
您介意发布控制器代码吗?
-
用户控制器还是注册控制器?
标签: ruby-on-rails ruby ruby-on-rails-3 validation devise