Ruby on rails: devise, хотите добавить код приглашения?
Я хотел бы добавить требование приглашения для пользователей, чтобы зарегистрироваться. То есть. в дополнение к требованию от них указать комманду электронной почты/пароля, я хочу дополнительное поле: invite_code. Это временное исправление, так что незапрашиваемые пользователи не могут войти в течение определенного альфа-периода.
Я запутался, так как Devise не добавляет контроллеры. Я как бы знаком с концепцией виртуальных атрибутов, и мне кажется, что я могу добавить: invite_code к модели, а затем просто жестко запрограммировать шаг теперь, когда он говорит, что код приглашения должен быть равен 12345 или что-то еще.
Это имеет смысл при разработке аутентификации? И как мне приблизиться к этому из-за правильного подхода к рельсам?
Большое спасибо.
Ответы
Ответ 1
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 = > : create, так как приглашение_код требуется только для создания нового пользователя, а не для обновления.
Ответ 2
Попробуйте следующее: http://github.com/scambra/devise_invitable
Он добавляет поддержку devise для отправки приглашений по электронной почте (требуется аутентификация) и принять приглашение, устанавливающее пароль.
Он работает с Devise >= 4.0 Если вы хотите использовать devise 3.0.x, вы должны использовать 1.2.1 или ниже. Если вы хотите использовать devise 3.1.x, вы должны использовать 1.3.2 или ниже. Если вы хотите используйте devise >= 3.2, вы должны использовать 1.6.1 или ниже...
Ответ 3
Согласно документам, invitable дает вам контроль над тем, кто получает приглашения другим. Люди не могут распространять приглашения, если для invitation_limit
установлено значение "0".
Из документов:
invite_limit: количество приглашений, которые могут отправлять пользователи. значение по умолчанию nil означает, что пользователи могут отправлять столько приглашений, сколько они хотите, нет ограничений для любого пользователя, столбец приглашения используемый. Значение 0 означает, что они не могут отправлять приглашения. Установка n > 0 означает, что они могут отправлять n приглашений. Вы можете изменить приглашение_лимит для некоторых пользователей, чтобы они могли отправлять более или менее приглашения, даже с глобальным приглашением_limit = 0.