如何设计一个包含默认数据、种子数据以及用户生成数据的数据库表? [关闭]
Posted
技术标签:
【中文标题】如何设计一个包含默认数据、种子数据以及用户生成数据的数据库表? [关闭]【英文标题】:How to design a database table that contains default, seed data as well as user-generated data? [closed] 【发布时间】:2021-01-31 09:40:53 【问题描述】:我有一张包含一组状态的表格:
id: uuid
user_id: uuid
name: text
每个用户一开始都使用相同的默认状态集,比如To Do
、In-Progress
、Complete
。用户可以创建自己的状态(并可能更改默认状态的名称)。
好像有两种选择:
-
创建一组共享默认值并将
user_id
保留为null
。这种方法的困难在于,如果用户更新默认状态的名称,我将不得不创建一个新状态并更新所有关联。
为每个用户创建一组默认值。明显的缺点是我会创建比必要更多的数据,但这会使逻辑更简单。
最好的方法是什么?
【问题讨论】:
如何计算“最佳”? 【参考方案1】:在您的迁移中
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :name
t.string :status, default: "To Do", null: false
t.timestamps
end
end
end
t.timestamps
将生成一个id
列。
您在 app/models/user.rb 中的 User.rb 模型中设置“默认值”:
STATUSES = ["To Do", "Done"]
在您的 users/form.html.erb 中,您将拥有(例如使用 simple_form
gem):
<%= simple_form_for(@user) do |f| %>
<%= f.input :name %>
<%= f.input :status, collection: User::STATUSES
<%= f.button :submit %>
<% end %>
这会让你基本上改变状态。
【讨论】:
感谢您的回答,应该在原问题中添加,但是此模型也可以被其他模型引用,即默认行将与其他模型关联。 阅读guides.rubyonrails.org/association_basics.html以上是关于如何设计一个包含默认数据、种子数据以及用户生成数据的数据库表? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章