在Ruby on Rails上创建一个公告板

问题描述 投票:-2回答:1

有必要编写一个公告板,按类别划分广告(广告可以同时在不同的类别中)。广告必须具有多种状态(审核/已批准/已拒绝),只有管理员才能更改状态。

告诉我,我需要为广告表和类别创建模型中的哪些字段?我怎么把它们绑在一起?

提前感谢您的帮助。

ruby-on-rails ruby cancancan enumerize
1个回答
0
投票
# app/models/advert.rb
class Advert < ApplicationRecord
  has_and_belongs_to_many :categories
  enum status: [:moderation, :approved, :rejected]
end

# app/models/category.rb
class Category < ApplicationRecord
  has_and_belongs_to_many :adverts
end

你需要有a JOINS table来链接这两个表。通过rails约定,这将被称为adverts_categories(但如果愿意,它很容易覆盖)。

例如,用于创建这些表的数据库迁移可以是:

class CreateAdverts < ActiveRecord::Migration[5.0]
  def change
    create_table :adverts do |t|
      t.integer :status
      # ...
    end
  end
end

class CreateCategories < ActiveRecord::Migration[5.0]
  def change
    create_table :categories do |t|
      # (What fields does this table have?)
      t.string :name
      # ...
    end
  end
end

class CreateAdvertsCategories < ActiveRecord::Migration[5.0]
  def change
    create_join_table :adverts, :categories do |t|
      t.index :advert_id
      t.index :category_id
    end
  end
end
© www.soinside.com 2019 - 2024. All rights reserved.