首先,我为我糟糕的英语提前道歉,我想说的话可能很难理解,但我会尽力解释我想问的问题。
我的问题是如何设计if-else-then条件数据库架构,下面是详细内容。
我想做一个基于用户回答的路由系统。当我发送查询表单给用户,用户回答问题,然后我的系统根据用户的回答将用户发送到一个链接。
例如,有两个问题,
1.您的年龄范围是多少?
- a. 20-30
- B. 30-40
- 约40-50人
1.您叫什么名字?
和
如果question1's answer is a
或question1's answer is b
,则转到A Link
如果question1's answer is c
和question2' 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
个字符
我想设计数据库表的规则,但它会确定,如果有其他想法比设计数据库。
1条答案
按热度按时间cetgtptt1#
我认为将重定向链接放在数据库中会破坏Rails中应用的MVC逻辑。
你在文本中表述的条件对我来说听起来像控制器逻辑,例如。
字符串
但是如果你真的想在数据库中实现这种完全动态的逻辑,你可以考虑将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.r123
或object.r54
你的问题太抽象了。很抱歉我的回答太抽象了,你不能直接执行,但至少应该是思考的食物!乐意进一步讨论。
也请想想数据库中也有布尔属性。也许这会让事情更容易,但100%不确定。