2011-12-15 8 views
0

私は、追加のカスタムフィールドが2つ(= :organization_id:username)の認証にDeviseを使用しています。私はまた、単に名前で構成される組織の足場を作りました。ユーザーがサインアップすると自動的に "組織"を作成しますか?

現在、ユーザーがサインアップすると、組織ID(整数)とユーザー名(文字列)を入力できます。

ユーザーbelong_to組織と組織has_manyユーザー。

は、ここに私のモデルがどのように見えるかだ(私はORGANIZATION_ID追加するアプリ/ビュー/工夫/登録内のファイルとユーザー名を除き、そのまま他のすべてを左):

#1 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 

#1 organization.rb

class Organization < ActiveRecord::Base 
    has_many :users 
end 

私が希望するのは、ユーザーがorganization_idを指定しなくてもサインアップしたときに、組織が自動的に作成されるということです。 :username

がどのように私はこれをやって行くだろうと

また、理想的@organization.nameはまったく同じでしょうか?

私はRailscastをnested model formsに見ましたが、彼は調査フォームの中に質問を作成しており、質問は調査に属しています。私はそれを他の方法で回避を行う必要があります(ユーザーがアンケートに属しているユーザーフォーム、内部の組織を作成する。)

すべてのヘルプや提案をいただければ幸いです。..

答えて

1
class User < ActiveRecord::Base 
    before_create :create_organization 

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

create_organization方法をユーザーを作成するSQLクエリの直前で実行されます。新しい組織が作成され、ユーザーに割り当てられます。

+0

うわー、素晴らしい、うまくいった!どのように私はこれを見てストーク私は考えていない。そのようにする方法はありますか?username = @ organization.name? – cdotfeli

+0

あなたは私がjuste編集したもののような意味ですか? –

+0

残念ながら、それはうまくいきません - 私が新しいアカウントにサインアップすると、組織名はまだ空白になっています。ありがとうございます!私がこれを理解しようとすることができるかどうかを見てみましょう。 – cdotfeli

関連する問題