我有一個用rails寫的mediaserver,它允許用戶上傳圖像並對它們進行分類。 我現在正在製作相當複雜的情緒板功能。在保存之前驗證多個嵌套屬性關聯模型的相等性
要開始我們有一個Template
模型。這Template
模型has_many TemplateBlocks
。 A TemplateBlock
具有屬性width
,height
,top
,left
和position
。這些選項可以讓您輕鬆生成css代碼和pdf。 TemplateBlock
表還包含template_id
的列。
接下來我們有一個Moodboard
其HAS_MANY Documents
通過MoodboardImages
class Moodboard < ActiveRecord::Base
has_many :documents, through: :moodboard_images
has_many :moodboard_images, dependent: :destroy
accepts_nested_attributes_for :moodboard_images
end
的MoodboardImages
表包含一個多列是template_block_id
以確定Template
位置因爲它是現在一切都可以正常使用,但我需要驗證MoodboardImage
創建。 當保存具有嵌套屬性的Moodboard
時,對於具有相同template_id
的MoodboardImage
應該有限制。一個Moodboard
顯然不能包含多個模板。
我給你們的問題是我怎樣才能完成這個驗證儘可能乾淨?
我當然可以寫一個方法,從數據庫中抓取TemplateBlock
並臨時存儲並比較它或其他東西,但這並不美觀。我想知道是否有一個「好」或「好」的方法來做到這一點。
請問你'Moodboard'模型?你可以在那裏添加驗證,不是? – sebkkom 2014-09-25 15:06:02
'Moodboard'模型並不特別,它只有一個名稱列。關係使得情緒板和我可以在'Moodboard'模型中添加驗證,但它需要查詢新的'MoodBoardImage'的template_block_id以確保template_blocks都具有相同的模板_id – 2014-09-25 15:20:58