我们说我有一项功能可以让用户从我的应用中删除他们的个人资料。但在他们离开之前,我要求他们填写他们离开的原因("太多电子邮件","不再使用该服务","其他& #34;等...)
我想在User
模型的字段中存储离开的原因 - User#reason
我的问题是,在哪里/如何存储我列举的原因列表?我看到了一些选择,希望得到关于其他人使用的东西的建议,哪些是最常用的" Rails方式"去做吧。
以纯文本格式存储 - 如上所述,请在User#reason
中存储原因。但是,每当我因某种原因更新特定的措辞时,我都必须修补所有现有的值。
静态配置表。创建一个名为Reason
的静态表/模型并存储原因列表。然后,每个User
模型将具有对reason_id
的外键引用。问题是,由于外键依赖,我无法轻易删除原因。
ActiveHash - 似乎是为了这种事情而制作的。内存中的哈希,其作用类似于ActiveRecord
对象。但是,再一次,如果任何Id的更改(并且它们很容易因为它们存储在代码中而不是数据库中,而不是数据库中,并且我组织中的任何人都可以更改它们),那么它会使外键变得混乱在其他表中映射。
谢谢!
答案 0 :(得分:0)
听起来你需要一个连接表,比如UsersReasons,它有两个外键,user_id和reason_id。然后你有一个由一个原因表支持的Reason模型,所有东西都是用外键链接的。
看看Rails'有关如何连接模型的has_many_through
文档:http://guides.rubyonrails.org/association_basics.html#the-has-many-through-association
答案 1 :(得分:0)
假设我有User
和Reason
模型。
我更倾向于使用user_reasons
和UserReason
作为列来说明user_id
(reason_id
模型)的订单项表。
User
可以has_one
user_reason
&安培; Reason
可以有has_many
user_reasons
每次用户在选择退出前提供理由时,都会将其存储在user_reasons
表格中。