除了許多文章和文檔遍及互聯網,我已閱讀了很多關於連接表,STI表和多態關聯的問題和解答。雖然我學到了很多東西,但我仍然對我在這種情況下應該做的事感到困惑。我可能已經閱讀了答案,但並不知道我正在閱讀答案,但我想看看是否有人能夠幫助我理解我應該在這裏做什麼。加入表格混淆Ruby on Rails
我有一個Gallery模型,一個Album模型,一個Image模型和一個Category模型。這些都嵌套在用戶模型中。
當您創建一個專輯時,爲它指定一個類別,並用一個Album_Categories模型保存它們。我希望Gallery模型知道類別的存在,並能夠選擇想要使用的類別。
一旦它選擇一個類別,它應該能夠訪問與該類別相關聯的專輯和通過和Album_Images連接錶鏈接的專輯的圖像。即使最初創建的「專輯」或「圖庫」被刪除,該類別也應該能夠繼續存在,以便其他專輯或圖庫可以在以後使用。
我的感覺是,無論什麼時候創建一個獨特的類別,應該如何通過Category_Galleries模型連接到Gallery,但是在使用連接到具有其自己的特定連接表的Gallery和Album的圖像時,Gallery不知道一個Album_images連接,所以我假設分享由另一個創建的類別的知識將是相同的。
任何方式來幫助我unerstand這將不勝感激。
編輯:型號代碼
class User < ActiveRecord::Base
has_many :images, dependent: :destroy
has_many :galleries, dependent: :destroy
has_many :albums, dependent: :destroy
has_many :categories, dependent: :destroy
accepts_nested_attributes_for :images, :galleries, :albums, :categories, allow_destroy: true
accepts_attachments_for :images, attachment: :file, append: true
end
class Image < ActiveRecord::Base
belongs_to :user
has_many :gallery_images, dependent: :destroy
has_many :galleries, through: :gallery_images
has_many :album_images, dependent: :destroy
has_many :albums, through: :album_images
attachment :file, type: :image
validates :file, presence: true
end
class Album < ActiveRecord::Base
belongs_to :user
validates :user_id, presence: true
has_many :album_galleries
has_many :galleries, through: :album_galleries # , dependent: :destroy
has_many :album_images, dependent: :destroy
has_many :images, through: :album_images
has_many :album_categories
has_many :categories, through: :album_categories
accepts_attachments_for :images, attachment: :file, append: true
accepts_nested_attributes_for :images
end
class Gallery < ActiveRecord::Base
belongs_to :user
validates :user_id, presence: true
has_many :gallery_images, dependent: :destroy
has_many :images, through: :gallery_images
has_many :album_galleries, dependent: :destroy
has_many :albums, through: :album_galleries
accepts_attachments_for :images, attachment: :file, append: true
accepts_nested_attributes_for :images
end
class Category < ActiveRecord::Base
belongs_to :user
validates :user_id, presence: true
has_many :albums, through: :album_categories
has_many :album_categories
end
class GalleryImage < ActiveRecord::Base
belongs_to :gallery
belongs_to :image
end
class AlbumCategory < ActiveRecord::Base
belongs_to :category
belongs_to :album
end
class AlbumGallery < ActiveRecord::Base
belongs_to :gallery
belongs_to :album
end
class AlbumImage < ActiveRecord::Base
belongs_to :album
belongs_to :image
end
請添加您的模型的代碼,特別是關聯定義。 –
畫廊是否有自己的一套圖像,或者是否由所有相關的相冊圖像推導出來? – hypern
如果類別與畫廊和相冊關聯到一個類別,那麼您可以通過檢查畫廊所有類別的所有相冊中的所有圖像,找到所有與代理相關的圖像。 – hypern