タスクとユーザーがいます。ユーザーがタスクを完了すると、ユーザーが費やした時間を示すフィールドを持つCompletionを作成します。すべてのタスクを完了ステータスとtime_spent属性とともに表示するフォームが必要です。送信時に、既存の補完を更新し、新しい補完を作成する必要があります。可能であればFormtasticでこれを実行したいのですが、基本的なRails3ソリューションに満足します。
class Completion < ActiveRecord::Base
belongs_to :task
belongs_to :user
# attribute time_spent
end
class User < ActiveRecord::Base
has_many :completions
has_many :tasks, :through => :completions
end
class Task < ActiveRecord::Base
belongs_to :milestone
has_many :completions
has_many :users, :through => :completions
end
追加の側面は、マイルストーンに属するタスクなど、特定の一連のタスクだけを表示したいということです。完了コントローラーに投稿するフォームをマイルストーンコントローラーに含める必要がありますか?
class Milestone < ActiveRecord::Base
has_many :tasks
has_many :completions, :through => :tasks
end
更新 私は今何日も探していました、そして私は多くの 行き止まり を見つけました。Railsフォームのこの複数のオブジェクトは近いですが、すべてのリンクオブジェクトがすでに存在している必要があります。
この質問を際立たせるのは、一部のリンクがまだ存在せず、ネストされるリンクの単一のモデルがないことです。たとえば、Ryan Daigleのネストされたオブジェクトフォームの投稿)この作業を編集用のフォームで作成しましたユーザーのすべての可能な完了ですが、1つのフォームで可能な完了のサブセットを編集する必要があります。has_many
Completionsとbelongs_to
Userの冗長オブジェクトMilestoneCompletionsを作成する必要がありますか?ActiveModelはできますhas_many
か?