Я пытаюсь настроить устройство для проверки регистрации пользователя, проверяя, существует ли код, вводимый пользователем при регистрации, в таблице. Чтобы проверить это, я сейчас просто тестирую ввод со статической строки. Любые мысли о том, как это сделать? Проблема заключается в том, что строка не передается из поля: ticket_id в функцию: invite_code_valid в классе пользователя по какой-либо причине. Когда я проверяю, что находится в переменной, он просто пуст, и при использовании строки «привет» при регистрации указывается указанное сообщение об ошибке.Добавление пользовательской проверки поля в ROR Devise
код в героя мерзавца, так что я не могу ссылаться на него, но я сделал это:
миграции:
class AddUserTicketIdField < ActiveRecord::Migration
def change
change_table :users do |t|
t.text :ticket_id
end
end
end
В моделях/user.rb:
validate: invite_code_valid,: on =>: создать
def invite_code_valid
unless self.ticket_id == "hello"
self.errors.add(:ticket_id, "membership code is not one we recognize, check again?")
end
end
В DEViSE/регистрации/new.html.erb:
<div class="field">
<%= f.label :Membership_code %><br />
<%= f.text_field :ticket_id, autocomplete: "off" %>
</div>
Чтобы увидеть, если код работает на все, что я попытался проверки определенной электронной почты, как это:
def invite_code_valid
unless self.email == "[email protected]"
self.errors.add(:ticket_id, "membership code is not one we recognize, check again?")
end
end
Это работает. При регистрации по электронной почте [email protected] регистрация идет, но не иначе.
Что происходит, я пропустил что-то о том, как работает Devise?
------------ ------------ решаемые
Джош Deedens ответ ниже ударил пятно. БЛАГОДАРЯ! Для справок в будущем это то, что я сделал.
class ApplicationController < ActionController::Base
before_action :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) << :ticket_id
end
end
Спасибо МНОГО! Это в значительной степени исправило это! С помощью вышеприведенного кода летучей мыши по какой-то причине давал ошибку метода, но я немного искал язык и менял его. Решение в оригинальном вопросе! Бесконечно благодарен! – aerugo
Добро пожаловать. Рад, что это помогло! –