这是我的模型层次结构:
Page
TextMedium
,ImageMedium
,VideoMedium
...(STI))
ImageAttachment
,VideoAttachment
...(不同的表))我想要一个表单来创建一个页面:
ImageMedium
(不是必需的)VideoMedium
(不是必需的) ImageMedium
验证其附件的存在。
VideoMedium
也是如此。
但该页面未验证是否存在ImageMedium
或VideoMedium
媒体。
我的表单看起来像这样(“伪代码”):
form_for page
fields_for :image_media
fields_for :attachement
image_field
fields_for :video_media
fields_for :attachement
video_field
问题:
如果我完全填写表单,它会很有效,我可以使用其媒体和附件创建页面。
但是如果我没有填写视频字段,我仍然希望创建我的页面(因为页面不需要视频媒体)。但它不会,因为视频媒体需要附件的存在,所以它无效,所以页面无效......
问题:
如何忽略视频媒体验证失败并仍然创建页面的事实?
修改:
我找到了答案:
class Page < ActiveRecord::Base
accepts_nested_attributes_for :video_media, reject_if: ->(attributes) { attributes["attachment_attributes"]["video"].blank? }
end
如果你有更好的,请分享。
答案 0 :(得分:0)
我找到了答案:
class Page < ActiveRecord::Base
accepts_nested_attributes_for :video_media, reject_if: ->(attributes) { attributes["attachment_attributes"]["video"].blank? }
end
如果你有更好的,请分享。