我正在开发一个“费用管理器”应用,它可以帮助用户管理费用并使用图表生成报告,还可以按日期或按时间段排序。
用户可以登录添加费用,并从下拉列表中为每个费用选择一个类别。
到目前为止一切进展顺利,但是当用户注册时,如果有可能在类别表中添加一些默认类别,我会感到疑惑。我还要求用户删除这些不应影响其他用户类别的默认类别。
请建议我如何处理此要求,而不是使用种子数据。
迁移以创建类别
class CreateCategories < ActiveRecord::Migration
def change
create_table :categories do |t|
t.string :name
t.timestamps null: false
end
end
end
以费用新形式下拉类别
<div class="form-group">
<%= f.label :category, "Category:" %><br>
<div class="col-md-2">
<%= f.collection_select(:category_id, current_user.categories, :id, :name, {}, { :class => "select_box selectpicker picker"}) %>
</div>
</div>
此应用的Git存储库:https://github.com/atchyut-re/expense_manager
希望我很清楚,如果我需要提供任何进一步的细节,请在评论中提及。
答案 0 :(得分:2)
在after_create
模型中创建user
回调,以创建一些类别。由于类别取决于用户,因此user
&amp;之间应该存在关联。 categories
。
答案 1 :(得分:1)
您可以简单地使用rails call back为每个用户创建默认类别,代码如下:
class User < ActiveRecord::Base
before_create :create_default_categories
DEFAULT_CATEGORIES = [
{name: 'default name 1', other_attribute: 'default other attribute 1'},
{name: 'default name 2', other_attribute: 'default other attribute 2'}
]
def create_default_categories
DEFAULT_CATEGORIES.each do |default_attrs|
self.categories.build(default_attrs)
end
end
end
因此,在创建用户时,也会创建默认类别!