2012-04-17 6 views
1

私はユーザー、プロジェクト、およびタスクを持っています。Rails。同時に2つのオブジェクトを作成し、そのうちの1つはもう一方のIDを使用します。

Users have many tasks 
Projects have tasks 

Tasks belongs to users 
Tasks belong to projects 

タスクモデルのフィールドの1つがProject_idです。

ユーザーが新しいタスクを作成したときに、新しいプロジェクトが作成され、作成されたタスクがProject_idフィールドに作成された新しいプロジェクトのIDを取得する必要があるため、自動的に関連付けられます。

私の問題は、新しいタスクを作成するときにプロジェクトがまだ作成されていないため、project_idがnullであることです。少なくとも、正しい方向に私を指差してください。

+0

このページのこの部分をチェックしてください:http://guides.rubyonrails.org/association_basics.html#highlighter_387265助けてくれると思います。 –

+0

stefan、実際に私の問題は協会のことではありません。それと同時に、タスクとプロジェクトを同時に作成して、新しく作成したプロジェクトにタスクを同時に関連付けることができます。しかし、ありがとう! –

+0

あなたのタスクコントローラーでは、 'create'action、プロジェクトを作成するコードを追加します。 –

答えて

2

before_createコールバックではどうでしょうか?

class Task 

    before_create :create_project 

    def create_project 
    new_project = Project.new(...) 

    unless new_project.save 
     self.errors.add(:base, "Couldn't create project.") 
     return false 
    end 

    self.project_id = new_project.id 
    end 

end 

return falseビットは無効Projectで保存からTaskオブジェクトを防ぐために、あなたのビューで表示することができ、それにエラーを追加する必要があります。

+0

問題ありません。あなたのプロジェクトに幸運。 – tsherif

関連する問題