rails 3 + devise, вероятно, довольно просто: как связать (специфичный для приложения) объект Customer с (созданным разработчиком) пользователем - PullRequest
1 голос
/ 21 февраля 2011

Наше приложение (до аутентификации) имеет клиентов и виджеты. Как и следовало ожидать, у каждого клиента есть отдельная запись в таблице «Клиенты», и мы не хотим, чтобы клиенты входили в аккаунты друг друга.

Мне удалось найти устройство для рельсов, установленных и работающих нормально. (Самыми полезными уроками IMO были http://presentations.royvandewater.com/authentication-with-devise.html и http://asciicasts.com/episodes/209-introducing-devise)

наша корневая страница на нашем сайте (Home # index) просто отображает ссылки регистрации или входа.

если пользователь входит в систему, мы хотим передать его в метод показа CustomerSController для своей учетной записи ...

поэтому мне нужно сделать три вещи, ни одну из которых я не вижу, как поступить с Devise:

a) когда пользователь регистрируется и создается запись о пользователе, также создается новая пустая запись клиента (я знаю как создать Customer.new, я просто не вижу, где «поставить» этот код)

б) связать этого нового клиента запись со своим пользователем запись (от 1 до 1) - надо ставить customer.id в пользователях или наоборот?

в) когда они войдут в систему, направьте их на

customers/[theUser.customer.id]

(или что-то в этом роде)

Ответы [ 2 ]

1 голос
/ 21 февраля 2011

а & б) Вы должны использовать после создания ловушки (что-то вроде этого):

class User < ActiveRecord::Base
  has_one :customer
  after_create :assign_customer

protected
  def assign_customer
    customer.create
  end
end

в) А потом в контроллере регистрации добавьте это:

 def after_inactive_sign_up_path_for(resource)
   customer_path(resource.customer)
 end
0 голосов
/ 21 февраля 2011

Вы можете переписать контроллер devise, например class RegistrationsController < Devise::RegistrationsController, и поместить туда все, что хотите, включая перенаправление и другие

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