我正在使用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
你介意張貼的控制器代碼? – natedavisolds 2011-06-11 04:09:39
用戶控制器或註冊控制器? – 2011-06-11 04:11:52
我發佈了........ – 2011-06-11 04:15:30