1

ユーザー、プロジェクト、タスクがあります。

Users have many tasks
Projects have tasks

Tasks belongs to users
Tasks belong to projects

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

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

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

4

1 に答える 1

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ために必要なビットです。TaskProject

于 2012-04-17T23:42:01.223 に答える