Я использую 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".
Полагаю, это может быть связано с тем, что файл, содержащий текстовое поле, не находится в каталоге пользователя, а находится в отдельном каталоге регистраций (я сделал это из следующего этого railscast при настройке omniauth). Я действительно не уверен, хотя. Как мне это исправить?
Вот дополнительная информация:
Это в моих маршрутах.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