如何设计一个包含默认数据、种子数据以及用户生成数据的数据库表? [关闭]

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 DoIn-ProgressComplete。用户可以创建自己的状态(并可能更改默认状态的名称)。

好像有两种选择:

    创建一组共享默认值并将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

以上是关于如何设计一个包含默认数据、种子数据以及用户生成数据的数据库表? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何让Jackson JSON生成的数据包含的中文以unicode方式编码

如何删除种子而不会对数据库产生任何影响?

Rails 3 从单个数据库表生成种子文件

JS随机数种子

如何用SQL语句实现某个字段数为随机数?

了解 Sequelize 数据库迁移和种子