Rails构建了一个用户可以构建的模板

时间:2012-06-06 02:16:01

标签: ruby-on-rails

这是关于如何设计我的应用程序的一部分的更一般的问题。目标是允许用户创建模板或任务序列的顺序。然后,用户可以选择来自另一个模型的哪些对象将填充模板模型的顺序。所以基本上,模板是一旦用户选择将填充模板的其他任务就可以重复的任务排序。我希望用户能够重用模板,根据单个模板创建不同的排序。我在想的是创建一个看起来像的模板模型:

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。任何想法将不胜感激,谢谢你提前。

1 个答案:

答案 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