Рубин на рельсах: Разработать, хотите добавить код приглашения? - PullRequest
17 голосов
/ 14 сентября 2010

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

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

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

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

Ответы [ 3 ]

24 голосов
/ 14 сентября 2010

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 =>: создать, так как код_вопроса необходим только для создания нового пользователя, а не для обновления.

10 голосов
/ 14 сентября 2010

Попробуйте это: 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 или ниже ...

0 голосов
/ 07 сентября 2017

Согласно документам, invitable дает вам контроль над тем, кто приглашает других. Люди не могут распространять приглашения, если для invitation_limit.

установлено значение «0».

Из документов:

приглашение_лимит: количество приглашений, которые могут отправить пользователи. значение по умолчанию nil означает, что пользователи могут отправить столько приглашений, сколько они хочу, нет ограничений для любого пользователя, столбец приглашение_лимит не используемый. Значение 0 означает, что они не могут отправлять приглашения. Настройка n> 0 означает, что они могут отправить n приглашений. Вы можете изменить приглашение_лимит столбец для некоторых пользователей, чтобы они могли отправлять более или менее приглашения, даже с глобальным приглашение_лимит = 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...