我想为我的Rails帖子应用添加一些类别。
我希望它们是固定值,因此用户可以从下拉菜单中选择特定类别。我的迁移文件如下所示:
class CreateCategories < ActiveRecord::Migration[5.1]
def change
create_table :categories do |t|
t.string :name
t.timestamps
end
end
end
在我的类别模型中添加一些固定值我该怎么做?
答案 0 :(得分:1)
您可以在NAMES = %w(category1 category2)
模型中设置常量Category
,添加包含验证并获取下拉列表的值,如下所示:Category::NAMES
。在这种情况下,不要忘记添加数据库索引。显然,您将查询与某个类别相关的帖子。
ActiveRecord::Enum提供了另一种选择。它允许您在没有Post
模型的Category
内声明类别字段。如果您不需要管理代码库之外的类别(某些管理面板),我建议您这样做:
class Post < ActiveRecord::Base
enum category: [:category1, :category2]
end
答案 1 :(得分:0)
如果要添加一些预定义的类别,则称为“种子数据”: Migrations and Seed data
要在创建数据库后添加初始数据,Rails具有内置的“种子”功能,使得该过程快速简便。在开发和测试环境中频繁重新加载数据库时,这尤其有用。开始使用此功能很容易:只需使用一些Ruby代码填充
db/seeds.rb
,然后运行rails db:seed
:
Category.create(name: 'category 1')
Category.create(name: 'category 2')