ruby-on-rails 如何为if-else-then条件设计数据库模式

nnsrf1az  于 2023-11-20  发布在  Ruby
关注(0)|答案(1)|浏览(115)

首先,我为我糟糕的英语提前道歉,我想说的话可能很难理解,但我会尽力解释我想问的问题。

我的问题是如何设计if-else-then条件数据库架构,下面是详细内容。

我想做一个基于用户回答的路由系统。当我发送查询表单给用户,用户回答问题,然后我的系统根据用户的回答将用户发送到一个链接。
例如,有两个问题,
1.您的年龄范围是多少?

  • a. 20-30
  • B. 30-40
  • 约40-50人

1.您叫什么名字?

如果question1's answer is aquestion1's answer is b,则转到A Link
如果question1's answer is cquestion2' answer contains 'kevin',则转到B Link
我不知道如何为这些条件设计数据库。
我有两个模型,但这只是临时模型。

routes

id | destination_type | destination_url  | rules            |
-------------------------------------------------------------
1  | external_url     | https://a.com    | Idon't have idea |

// if user's answer matches with rules, then send user to destination_url

个字符
我想设计数据库表的规则,但它会确定,如果有其他想法比设计数据库。

cetgtptt

cetgtptt1#

我认为将重定向链接放在数据库中会破坏Rails中应用的MVC逻辑。
你在文本中表述的条件对我来说听起来像控制器逻辑,例如。

AnswerController
  def a
    if things
      redirect_to a_path
    else
      redirect_to b_path
    end
  end
end

字符串
但是如果你真的想在数据库中实现这种完全动态的逻辑,你可以考虑将medhod调用作为属性Question.my_string_on_answer_a放在数据库中,并在Controller方法中使用my_question.send(my_question.my_string_on_answer_a)或redirect_to“my_string_on_answer_a”。
最后,听起来你喜欢把路由目标放在数据库中。这是相当akward。
在ruby中,向my_object发送东西就像调用/调用方法一样。
我最近用它来动态调用方法。我在一个模型中实现了一个表单的行。这些“行”可以被object.send("r123")object.send("r54")调用。
相应地调用方法,例如object.r123object.r54
你的问题太抽象了。很抱歉我的回答太抽象了,你不能直接执行,但至少应该是思考的食物!乐意进一步讨论。
也请想想数据库中也有布尔属性。也许这会让事情更容易,但100%不确定。

相关问题