Создать "организацию" автоматически, когда пользователь зарегистрируется? - PullRequest
0 голосов
/ 15 декабря 2011

Я использую Devise для аутентификации с добавлением двух пользовательских полей = :organization_id и :username. Я также создал основу для Организации, которая просто состоит из Имени.

В настоящее время, когда пользователи регистрируются, они могут ввести идентификатор организации (целое число) и имя пользователя (строка).

Пользователи belong_to организаций и организаций has_many пользователей.

Вот как выглядят мои модели (я оставил все остальное нетронутым, за исключением файлов в app / views / devise / registrations, чтобы добавить имя_организации и имя пользователя):

# user.rb

class User < ActiveRecord::Base
  belongs_to :organization
  # Include default devise modules. Others available are:
  # :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :password, :password_confirmation, :remember_me, :organization_id, :username

end

# organization.rb

class Organization < ActiveRecord::Base
  has_many :users
end

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

Кроме того, в идеале @organization.name будет точно таким же, как :username

Как бы я поступил так?

Я видел Railscast на вложенных модельных формах , но он создает вопрос внутри формы опроса, и вопросы принадлежат опросу. Мне нужно сделать это наоборот (создать организацию внутри формы пользователя, в которой пользователи будут участвовать в опросе.)

Любая помощь и предложения будут с благодарностью ..

1 Ответ

1 голос
/ 15 декабря 2011
class User < ActiveRecord::Base
  before_create :create_organization

  private
  def create_organization
    self.organization = Organization.create :name => self.username
  end
end

Метод create_organization будет выполнен непосредственно перед запросом sql, который создает пользователя. Он создаст новую организацию и назначит ее пользователю.

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