2009-10-03 28 views
0

序列被作为程序和步骤之间的连接表:储蓄加盟模式的has_many:通过

create_table "procedures", :force => true do |t| 
    t.integer "procedure_id" 
    t.integer "revision" 
    t.string "description" 
    end 

    create_table "sequences", :force => true do |t| 
    t.integer "procedure_id" 
    t.integer "step_id" 
    t.integer "step_number" 
    end 

    create_table "steps", :force => true do |t| 
    t.string "descriptor" 
    t.string "step_category" 
    t.string "step_type" 
    t.text  "instructions" 
    end 

我所试图做的是创建一个过程,然后创建从过程的步骤,以及让它在同时关联步骤和过程的顺序中保存step_number。

  1. 有没有什么好的指导如何做has_many:通过?我所发现的只是如何制作模型,我不知道如何使用它。
  2. 保存我的步骤时,是否需要显式创建序列?我希望Rails能够自动创建它。

如果任何人有一些关于如何做到这一点的指示,我会很高兴听到他们,我有很多麻烦设置它。

回答

1

使用“has and belong to many”时,Rails不会自动为您创建连接记录。如果您使用“有很多:通过”,您将不得不显式创建连接记录。但是,这并不能阻止你从辅助方法中为你做一些肮脏的工作。

+0

还有一个问题:是否可以通过执行类似于@ step.step_number的方式来访问step_number?或者我必须去找到相关的序列来访问它? – Karl 2009-10-04 00:13:47

+1

您是否打算只采用一个步骤来关联一个步骤?如果是这样,那么你并不需要有序列表,你可以节省一些麻烦。另一方面,如果一个步骤可以属于多个差异过程(通过序列),那么你就不知道你想要什么step_number,除非你知道它是什么程序。在这种情况下,你可以使用@ step.step_number(procedure)。 – 2009-10-04 00:39:27

+0

有必要能够在多个程序中有一个步骤。从我所知道的情况来看,我几乎必须明确地从数据库中提取修订版以获取step_number。有点麻烦,但我想这是唯一的方法。 – Karl 2009-10-04 03:46:09