我有一个用户模型,它与资产模型有很多关联(标准回形针设置)。在视图中,我使用fields_for helper为资产设置了许多文件字段。如果最终用户未指定文件,则不会保存资产记录。这就是我想要的。到目前为止还不错。
然后我添加了一个标题属性到资产模型。我还为每个相应的文件字段添加了一个文本字段。问题来了。当最终用户未指定文件或标题时,将保存资产记录。保存的记录的标题为空字符串,所有其他回形针属性为零。
问题是,在没有为回形针属性指定文件的情况下,如何防止保存资产记录?由于资产是可选的,我不希望生成任何错误反馈。有什么想法吗?谢谢
您可以在资产模型中执行validates_presence_of :caption
,但这也需要标题。如何检查链接到用户before_validation
的所有资产上是否存在文件?也许是这样的?(可能需要一些调整)
class User < AR::Base
has_many :assets, :dependent => :destroy
before_validation :check_assets
def check_assets
self.assets.each do |asset|
unless asset.attachment.file?
if asset.new_record?
self.assets.delete(asset)
else
asset.destroy
end
end
end
end
end