1) Виртуальному атрибуту обычно требуется установщик в дополнение к получателю.
Самый простой способ - добавить
attr_accessor :invite_code
attr_accessible :invite_code # allow invite_code to be set via mass-assignment
# See comment by James, below.
Пользовательской модели
2) Я предполагаю, что Devise хочет, чтобы модель User прошла валидацию. Таким образом, вы можете остановить проверку, добавив
validates_each :invite_code, :on => :create do |record, attr, value|
record.errors.add attr, "Please enter correct invite code" unless
value && value == "12345"
end
ПРИМЕЧАНИЕ: добавлено: on =>: создать, так как код_вопроса необходим только для создания нового пользователя, а не для обновления.