我做的像9gagtv风格的小视频网站 并且网站中的视频有一个类别,因此用户可以找到所有技术视频 但有些视频属于_to_many类别,比如视频是关于技术的,但也很有趣所以它会出现在两个类别的视频中,我不知道该怎么做? 它会在视频表中需要多个t.references吗?这段关系会怎样?
category.rb
class Category < ApplicationRecord
has_many :videos
end
video.rb
class Video < ApplicationRecord
belongs_to :category
end
类别迁移
class CreateCategories < ActiveRecord::Migration[5.0]
def change
create_table :categories do |t|
t.string :title
t.timestamps
end
end
end
视频迁移
class CreateVideos < ActiveRecord::Migration[5.0]
def change
create_table :videos do |t|
t.string :url
t.string :title
t.text :description
t.integer :duration
t.references :category, foreign_key: true
t.timestamps
end
end
end
答案 0 :(得分:1)
您可以使用has_and_belongs_to_many 通过第三个表创建多对多关联。
型号:
class Category < ApplicationRecord
has_and_belongs_to_many :videos
end
class Video < ApplicationRecord
has_and_belongs_to_many :categories
end
迁移:
class CreateCategories < ActiveRecord::Migration[5.0]
def change
create_table :categories do |t|
t.string :title
t.timestamps
end
end
end
class CreateVideos < ActiveRecord::Migration[5.0]
def change
create_table :videos do |t|
t.string :url
t.string :title
t.text :description
t.integer :duration
t.timestamps
end
end
end
class CreateCategoriesVideos < ActiveRecord::Migration[5.0]
def change
create_table :categories_videos do |t|
t.references :category, index: true
t.references :video, index: true
end
end
end
答案 1 :(得分:0)
我认为你要找的是 has_and_belongs_to_many 关系(see more)
看起来应该是那样的
分类
class Category < ApplicationRecord
has_and_belongs_to_many:videos
end
视频
class Video < ApplicationRecord
belongs_to :category
end
迁移
class CreateCategoriesVideosJoinTable < ActiveRecord::Migration
def change
create_table :categories_videos, id: false do |t|
t.integer :category_id
t.integer :video_id
end
end
end