在保存之前验证多个嵌套属性关联模型的相等性

时间:2014-09-25 14:54:27

标签: ruby-on-rails ruby-on-rails-4 associations rails-activerecord nested-attributes

我有一个用rails编写的mediaserver,允许用户上传图像并对其进行分类。 我现在正在制作相当复杂的情绪板功能。

首先,我们有Template模型。此Template模型has_many TemplateBlocksTemplateBlock具有widthheighttopleftposition属性。选择它们是为了便于生成css代码和pdf。 TemplateBlock表还包含template_id的列。

接下来我们有一个Moodboard,其中包含DocumentsMoodboardImages

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的嵌套属性保存MoodboardImages时,MoodboardImage应该对template_id具有相同的限制MoodboardTemplateBlock显然不能包含多个模板。

我向你们提出的问题是,如何尽可能地完成这种验证?

我当然可以写一个方法从数据库中抓取before_save并临时存储并比较它{{1}}或其他东西,但这不是很好。我想知道是否有“好”或“好”的方法来做到这一点。

1 个答案:

答案 0 :(得分:0)

验证看起来像

validates :template_id, :uniqueness => {:scope => :moodboard_id}

请参阅rails guides