我有一个包含一组状态的表:
id: uuid
user_id: uuid
name: text
每个用户一开始都有相同的默认状态集,比如To Do
、In-Progress
、Complete
。用户可以创建自己的状态(并可能更改默认状态的名称(。
似乎有两种选择:
- 创建一组共享默认值,并将
user_id
保留为null
。这种方法的困难在于,如果用户更新默认状态的名称,我将不得不创建一个新状态并更新所有关联 - 为每个用户创建一组默认值。明显的缺点是我会创建比必要的更多的数据,但这会使逻辑简单得多
最好的方法是什么?
在迁移中
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_form
gem(:
<%= simple_form_for(@user) do |f| %>
<%= f.input :name %>
<%= f.input :status, collection: User::STATUSES
<%= f.button :submit %>
<% end %>
这将使您基本上更改状态。