如何在 rails 中的列中设置一些默认值
How to set some default values in a column in rails
我正在开发一个 'expense manager' 应用程序,它可以帮助用户管理他们的费用并使用图表生成报告,他们还可以按日期或时间段对费用进行排序。
用户可以登录添加费用并select从下拉列表中为每项费用分类。
到目前为止一切顺利,但我一直怀疑是否有可能在用户注册时在类别 table 中添加一些默认类别。我还要求用户删除这些不应影响其他用户类别的默认类别。
请建议我如何处理此要求而不是使用种子数据。
创建类别迁移
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
希望我清楚如果我需要提供任何进一步的细节请在评论中提及。
您可以简单地使用 rails 回调为每个用户创建默认类别,代码如下:
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
所以当用户被创建时,默认类别也会被创建!
在您的 user
模型中创建一个 after_create
回调以创建一些 类别。由于 类别 取决于用户,因此 user
和 categories
之间应该存在关联。
我正在开发一个 'expense manager' 应用程序,它可以帮助用户管理他们的费用并使用图表生成报告,他们还可以按日期或时间段对费用进行排序。
用户可以登录添加费用并select从下拉列表中为每项费用分类。
到目前为止一切顺利,但我一直怀疑是否有可能在用户注册时在类别 table 中添加一些默认类别。我还要求用户删除这些不应影响其他用户类别的默认类别。
请建议我如何处理此要求而不是使用种子数据。
创建类别迁移
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
希望我清楚如果我需要提供任何进一步的细节请在评论中提及。
您可以简单地使用 rails 回调为每个用户创建默认类别,代码如下:
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
所以当用户被创建时,默认类别也会被创建!
在您的 user
模型中创建一个 after_create
回调以创建一些 类别。由于 类别 取决于用户,因此 user
和 categories
之间应该存在关联。