У меня есть задачи и пользователи. Когда пользователь завершает задачу, я создаю Завершение, в котором есть поле, в котором пользователь указывает, сколько времени он потратил. Мне нужна форма, которая показывает все задачи с их статусом завершения и атрибутом time_spent. При отправке существующие дополнения должны быть обновлены и созданы новые. Я бы хотел сделать это в Formtastic, если возможно, но я Я буду доволен базовым решением Rails 3.
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
Дополнительный аспект заключается в том, что я хочу показать только определенный набор задач, например, принадлежащих Milestone. Должен ли я иметь форму на контроллере Milestone, которая отправляет ее контроллеру завершения?
class Milestone < ActiveRecord::Base
has_many :tasks
has_many :completions, :through => :tasks
end
ОБНОВЛЕНИЕ Я искал несколько дней и нашел много мертвых концов . Это Несколько объектов в форме Rails близко, но требует, чтобы все связывающие объекты уже существовали.
Что отличает этот вопрос, так это то, что некоторые ссылки еще не существуют и не существует единой модели для вложений ссылок. Например, в сообщении Райана Дейгла Nested Object Forms ) I ' Я сделал эту работу в форме для редактирования всех возможных Завершений для пользователя, но мне нужно отредактировать подмножество возможных Завершений в одной форме. Нужно ли мне создавать избыточный объект MilestoneCompletions, который has_many
Completions и own_to
User? Может ли ActiveModel has_many
?