Подтвердить что ты не робот

Ruby on rails: devise, хотите добавить код приглашения?

Я хотел бы добавить требование приглашения для пользователей, чтобы зарегистрироваться. То есть. в дополнение к требованию от них указать комманду электронной почты/пароля, я хочу дополнительное поле: invite_code. Это временное исправление, так что незапрашиваемые пользователи не могут войти в течение определенного альфа-периода.

Я запутался, так как Devise не добавляет контроллеры. Я как бы знаком с концепцией виртуальных атрибутов, и мне кажется, что я могу добавить: invite_code к модели, а затем просто жестко запрограммировать шаг теперь, когда он говорит, что код приглашения должен быть равен 12345 или что-то еще.

Это имеет смысл при разработке аутентификации? И как мне приблизиться к этому из-за правильного подхода к рельсам?

Большое спасибо.

4b9b3361

Ответ 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.