这是关于如何设计我的应用程序的一部分的更一般的问题。目标是允许用户创建模板或任务序列的顺序。然后,用户可以选择来自另一个模型的哪些对象将填充模板模型的顺序。所以基本上,模板是一旦用户选择将填充模板的其他任务就可以重复的任务排序。我希望用户能够重用模板,根据单个模板创建不同的排序。我在想的是创建一个看起来像的模板模型:
model Template
order:string
number_of_unique_tasks:integer
我还有两个可以存储任务的模型:
model Tasks
has_many :list_tasks
#some properties
model List
has_many :list_tasks
has_many :tasks, through: list_tasks
model ListTask
belongs_to :lists
belongs_to :tasks
order:integer
所以我想使用Template
模型来构建List
。任何想法将不胜感激,谢谢你提前。
答案 0 :(得分:0)
如果我理解正确,模板模型应该类似于List模型。它应该具有描述性名称和一组任务。从模板构建列表时,应使用相同的序列将与该模板关联的任务复制到新列表。像这样:
#table templates
# id: integer
# name: string
class Template < ActiveRecord::Base
has_many :template_tasks, order: sequence
has_many :tasks, through: :template_tasks
def to_list
list = List.new
list.list_tasks = template_tasks.map{|t|
ListTask.new(task_id: t.task_id, order: t.sequence)
}
list
end
end
#table template_tasks
# id: integer
# template_id: integer
# task_id: integer
# sequence: integer
class TemplateTask < ActiveRecord::Base
belongs_to :task
belongs_to :template
end