1

ユーザーがdeviseでアカウントを作成するときに追加のレコードを作成するにはどうすればよいですか?

ユーザー モデルとチーム モデルの間の HABTM 関連付けを使用して、アカウントの作成時にユーザーが関連付けられているチームを作成しようとしています。

以下は、私が使用しようとしたコードです。

class RegistrationsController < Devise::RegistrationsController
  def create
    super
    current_user.teams.create(:name => 'User Name')
  end
end

私もこれを試しました

class RegistrationsController < Devise::RegistrationsController
def create

    build_resource

        if resource.save
        resource.teams.create(:name => 'User Name')
        if resource.active_for_authentication?
            set_flash_message :notice, :signed_up if is_navigational_format?
            sign_in(resource_name, resource)
            respond_with resource, :location => after_sign_up_path_for(resource)
        else
            set_flash_message :notice, :"signed_up_but_#{resource.inactive_message}" if is_navigational_format?
            expire_session_data_after_sign_in!
            respond_with resource, :location => after_inactive_sign_up_path_for(resource)
        end
        else
        clean_up_passwords resource
        respond_with resource
        end
    end
end
4

2 に答える 2

4

カスタマイズされたコントローラーを指すように routes.rb を変更することで、これを解決しました。

ルート.rb

devise_for :users,
           :controllers => { :registrations => "registrations" }

registrations_controller.rb

class RegistrationsController < Devise::RegistrationsController
   def create
     super
     resource.teams.create(:name => 'User Name')    
   end
end
于 2012-07-26T13:50:50.860 に答える
1

次のように、モデルで before_save を使用できます。

class User < ActiveRecord::Base
  # ... your code ...
  after_create :set_user_on_team
  # ... your code ...
  private
    def set_user_on_team
      teams.create(:name => username)
    end
end

こちらのドキュメントを参照してください: http://guides.rubyonrails.org/active_record_validations_callbacks.html#available-callbacks

于 2012-07-26T13:11:25.060 に答える