在Rails 5中使用模型中的默认值

时间:2017-06-15 16:34:32

标签: ruby-on-rails

我想为我的Rails帖子应用添加一些类别。

我希望它们是固定值,因此用户可以从下拉菜单中选择特定类别。我的迁移文件如下所示:

class CreateCategories < ActiveRecord::Migration[5.1]
  def change
    create_table :categories do |t|
      t.string :name
      t.timestamps
    end
  end
end

在我的类别模型中添加一些固定值我该怎么做?

2 个答案:

答案 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')