我想要的是有一个我可以创建内容的个人资料,每个内容可以有很多视频,很多图像等等。这就是为什么我将视频和图像视为不同的表格的原因。但我想知道某个视频是否属于特定的个人资料或内容,而无需编写复杂的查询。
我有以下模型,有has_many:通过关联
class Profile < ApplicationRecord
has_many :contents
has_many :videos, through: :contents
end
class Content < ApplicationRecord
belongs_to :profile
belongs_to :video
end
class Video < ApplicationRecord
has_many :contents
has_many :profiles, through: :contents
end
以及以下迁移
create_table :contents do |t|
t.string :name
t.text :description
t.references :video, foreign_key: true
t.references :profile, foreign_key: true
end
create_table :profiles do |t|
t.integer :profile_type
t.references :user, foreign_key: true
end
create_table :videos do |t|
t.string :name
t.string :file
t.string :link
end
到目前为止,我的问题是我每个内容只能有一个视频。如何在内容(中间表)中存储许多视频,以保持has_many通过关联?
由于我想要有不同类型的内容,这意味着它们会是额外的表格,我想得到一些有助于我改进这种方法的想法
注意:我正在阅读此文档,http://guides.rubyonrails.org/association_basics.html#the-has-many-through-association
答案 0 :(得分:0)
&#34;真相&#34;存在冲突
之间我可以创建内容的配置文件,每个内容可以包含许多视频,许多图像等等
并且您的实际代码实现是:
因此,如果我理解正确,并假设您想要更改您的&#34;代码&#34;进入你想要的&#34;然后:
class Profile < ApplicationRecord
has_many :contents
has_many :videos, through: :contents
end
class Content < ApplicationRecord
belongs_to :profile
has_many :videos
end
class Video < ApplicationRecord
belongs_to :content
end
,您的架构应如下所示:
create_table :contents do |t|
t.string :name
t.text :description
t.references :profile, foreign_key: true
end
create_table :profiles do |t|
t.integer :profile_type
t.references :user, foreign_key: true
end
create_table :videos do |t|
t.string :name
t.string :file
t.string :link
t.references :content, foreign_key: true
end
上面的代码应该回答您的其他问题:
如何在内容中存储许多视频
...因为内容记录现在有很多视频