Rails Beta приглашения - переопределение регистрационного устройства Devise - PullRequest
2 голосов
/ 05 ноября 2011

Я использую Devise (1.4.8) для моей модели User и пытаюсь реализовать простую функцию бета-приглашения (Rails 3.0.7), следуя railscast Райана Бейтса.

Я не могу заставить [новый] метод контроллера моей модели устройства распознать токен приглашения. Я подозреваю, что это потому, что я не успешно переопределяю контроллер регистрации Devise.

Я предполагаю, что вместо использования user_controller для передачи переменных из формы регистрации, я должен переопределить контроллер регистрации devise. Итак, мой registrations_controller.rb в корневой папке контроллеров:

class RegistrationsController < Devise::RegistrationsController
  def new
    super
    @user = User.new(:invitation_token => params[:invitation_token])
    @user.email = @user.invitation.recipient_email if @user.invitation
  end
end

В маршрутах.rb:

devise_for :users, :controllers => {:registrations => 'registrations'} do
  get 'users/sign_up/:invitation_token' => 'devise/registrations#new', :as => "new_user_registration"
end

В приглашение_контроллер.rb

Mailer.invitation(@invitation, new_user_registration_url+"/#{@invitation.token}").deliver

Как я могу переопределить контроллер регистрации Devise и успешно передать: приглашение_токен из новой формы пользователя Devise?

Ответы [ 2 ]

0 голосов
/ 22 декабря 2011

После еще одного исследования я обнаружил, что другие сталкиваются с подобной проблемой:

Реальная проблема заключалась в том, что я пытался передать переменную одному из методов обратного вызова Omniauth.Я не смог понять, как это сделать.В качестве обходного пути я использовал переменную сеанса и обращался к ней из метода обратного вызова Omniauth.

Не очень элегантно, но сделал свое дело.

0 голосов
/ 21 декабря 2011

Что если вы сбросите params [: приглашение_token] в вашем контроллере?У вас есть парам?

Вы должны использовать «регистрации # новые», а не «разработка / регистрации # новые» в ваших маршрутах

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