提问人:destiny1616 提问时间:10/25/2023 最后编辑:dbuggerdestiny1616 更新时间:10/26/2023 访问量:42
如何为 if-else-then 条件设计数据库架构
how to design db schema for if-else-then condition
问:
首先,我提前为我的英语不好感到抱歉。很难理解我想说什么,但我会尽力解释我想问的。
**我的问题是如何设计 if-else-then 条件数据库架构。以下是详细信息。 **
我想根据用户的回答制作一种路由系统。当我向用户发送查询表单时,用户回答问题时,我的系统会根据用户的回答将用户发送到一个链接。
例如,有两个问题,
- 你的年龄范围是多少?
- 答:20-30
- 生于30-40岁
- 约40-50
- 你叫什么名字?
和
如果或然后转到question1's answer is a
question1's answer is b
A Link
如果,然后转到question1's answer is c
question2' answer contains 'kevin'
B Link
我不知道如何为这些条件设计数据库。
我有 2 个模型。但这只是临时建模。
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
question
id | kind | label | options |
--------------------------------------------------------------
1 | radio | what's your age range | [{value: '20-30'},...] |
2 | name | name | {} |
我想为规则设计数据库表,但如果除了设计数据库之外还有其他想法,那就没关系了。
答:
我认为将重定向链接放在数据库中会破坏 rail 中应用的 MVC 逻辑。
您在文本中表述的条件对我来说听起来像是控制器逻辑,例如
AnswerController
def a
if things
redirect_to a_path
else
redirect_to b_path
end
end
end
但是,如果你真的尝试在数据库中制作这个完全动态的(也就是完整的逻辑),你可以考虑将 medhod 调用作为属性放在 datebase 中,并在方法或其他东西中使用或redirect_to“my_string_on_answer_a”。Question.my_string_on_answer_a
my_question.send(my_question.my_string_on_answer_a)
Controller
最后,听起来您喜欢将路由目标放在数据库中。这很不起眼。
在 ruby 中发送一些东西就像调用/调用方法一样。my_object
我最近用它来动态调用方法。我在模型中实现了表单的行。Tho “rows” 可以由 或object.send("r123")
object.send("r54")
相应地调用方法,例如或object.r123
object.r54
你的问题很抽象。对不起,如果我的答案太抽象,你无法直接实现,但至少应该值得深思!很高兴进一步讨论。
还请注意,数据库中也有布尔属性。也许这让事情变得更容易,但 100% 不确定。
评论