有必要编写一个公告板,按类别划分广告(广告可以同时在不同的类别中)。 广告必须具有多种状态(审核/已批准/已拒绝),只有管理员才能更改状态。
请告诉我,我需要为广告表和类别创建模型中的哪些字段?我如何将它们绑在一起?
提前感谢您的帮助。
答案 0 :(得分: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