2016-02-18 3 views
0

У меня есть модель User, которая создается через Devise, и после ее создания я хотел бы автоматически создать новую Client (другая модель в моем приложении). Новый атрибут Client, :user_id, должен быть равен :id созданного User. Я считаю, что мне нужно использовать что-то вроде:Rails 4 + Devise: Создайте пользователя, создайте XYZ

class Users::RegistrationsController < Devise::RegistrationsController 
    after_create :create_client 

    def create_client 
     Client.create(:user_id, :id) # Not sure what should go here 
    end 
end 

Правильно ли это можно сделать? Кроме того, если ассоциации являются важными Client belongs_to :user и User has_one :client

ответ

1

Вы можете добавить after_create обратного вызова в модели пользователя (user.rb), проверьте here для получения дополнительной информации о том, как создать HAS_ONE ассоциации.

class User < ActiveRecord::Base 
    after_save :add_client 


    def add_client 
    self.create_client(client_attribute1: value, client_attribute2: value) 
    end 
end 
+0

Где вы можете связаться? Это должно быть «User»? Предполагается ли это, что это модель 'Devise' User'? –

Смежные вопросы