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



我有一个包含一组状态的表:

id: uuid
user_id: uuid
name: text

每个用户一开始都有相同的默认状态集,比如To DoIn-ProgressComplete。用户可以创建自己的状态(并可能更改默认状态的名称(。

似乎有两种选择:

  1. 创建一组共享默认值,并将user_id保留为null。这种方法的困难在于,如果用户更新默认状态的名称,我将不得不创建一个新状态并更新所有关联
  2. 为每个用户创建一组默认值。明显的缺点是我会创建比必要的更多的数据,但这会使逻辑简单得多

最好的方法是什么?

在迁移中

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列。

您设置";默认值";在你的User.rb模型中的app/models/User.rb:

STATUSES = ["To Do", "Done"]

在users/form.html.erb中,您将有(例如使用simple_formgem(:

<%= simple_form_for(@user) do |f| %>
<%= f.input :name %>
<%= f.input :status, collection: User::STATUSES
<%= f.button :submit %>
<% end %>

这将使您基本上更改状态。

最新更新