【问题标题】:How to store branching logic?如何存储分支逻辑?
【发布时间】:2012-01-18 15:38:05
【问题描述】:

我正在尝试找出在我的模型中存储/处理分支逻辑的最佳方式。

用户会设置不同的规则,规则是“如果调查者选择答案 1,则显示问题 2、3 和 4”

我有问答模型,所以我可以存储规则并根据需要将它们映射到问答 ID。

只是从数据库列的角度不确定如何最好地处理它。

【问题讨论】:

    标签: ruby-on-rails logic


    【解决方案1】:
    • 使用地图:

      (答案 1)->(Q1、Q2、Q3)

    至于数据库架构: 鉴于此表

    questionsTable:ID、CurrentAnswer、NextQuestion

    select NextQuestion from questionsTable where CurrentQuestion='A1'
    
    • 您还可以使用合取范式 (CNF) 的逻辑语句创建一个小大脑:

    A1->Q1 ^ A1->Q2 ^ A1->Q3

    或者您可以将每个含义分开作为单独的语句。

    然后评估这些表达式。然后结果可以指向下一个问题。

    【讨论】:

      【解决方案2】:

      可能的答案属于单个问题(列 answer_id)。 问题:has_many :answers 答案:belongs_to :question

      对于后续问题,这可能需要更多工作: 问题可以属于(=跟随)不同的答案,并且多个答案可以有相同的问题跟随它们。所以在这里你很可能需要一个 has_and_belongs_to_many 关系与一个存储 question_id 和 answer_id 的中间表。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-12
        • 1970-01-01
        • 2010-10-02
        • 2020-05-13
        • 2018-02-28
        • 1970-01-01
        • 1970-01-01
        • 2011-11-04
        相关资源
        最近更新 更多