3
我正在開發一個項目,其中我可能有兩種資產的實體:圖片和視頻,基本上。Rails STI條件分類從基類
因爲我希望所有的資產在同一個表,並同時具有圖片和視頻從降了要麼圖片單個上傳表單或影片,我使用單表繼承資產類。另外,根據是視頻還是圖片,我將運行不同的驗證/回調。
我用回形針處理上傳過程中,我的想法是上傳文件,並創建一個與它的資產時,應用程序將實例化正確的子類(圖片或視頻)根據上傳文件的MIME類型。
這是我的課的草圖:
class Project < ActiveRecord::Base
has_many :assets
accepts_nested_attributes_for :assets
end
class Asset < ActiveRecord::Base
belongs_to :project
has_uploaded_file :content, ...
end
class Picture < Asset
validate :image_size
...
end
class Video < Asset
after_save :convert_format
...
end
我的想法是,以實現對資產類before_save
回調並嘗試實例正確的類存在,但我不知道如何這樣做,或者如果這是一個好主意。
對此有何想法?
我會接受這個答案,因爲它接近我最終做的,並指出我在正確的方向:我放棄了嵌套建模功能,並選擇手動保存嵌套模型。創建正確子類的「工廠」邏輯確實在Project控制器中,但它可以很容易地移植到它的模型中,只要我完成其他重要工作,我就會盡快完成。描述解決方案的簡化片段可在http://pastie.org/1522024上找到。 – punnie 2011-02-02 16:36:36