我有一个食谱模型has_many成分(反过来属于食谱)。我希望成分依赖于食谱而存在;如果没有食谱,成分就不应该存在。
我正在尝试在成分中强制执行有效的食谱ID。我一直在使用Ingredient中的validates :recipe, :presence => true
(Rails 3)语句执行此操作。如果我在将成分添加到ingredients
集合之前保存配方,这可以正常工作。但是,如果我没有明确控制保存(例如当我从嵌套表单创建配方及其成分时),那么我收到错误:
配料配方不能为空白
我可以通过在Ingredient.recipe上删除状态验证来解决这个问题。但是,我并不特别喜欢这个,因为这意味着我在没有安全网的情况下工作。
在Rails中强制存在依赖的最佳方法是什么?
我正在考虑的事情(请评论每个人的智慧):
答案 0 :(得分:2)
看看这个:
过去我觉得我添加了:on => :验证器的更新选项,有助于收紧网络。我认为DB中的外键限制是个好主意,虽然我很少使用它:(