ActiveRecord:更新模型时validates_associated不起作用?

时间:2014-02-07 16:12:58

标签: ruby-on-rails activerecord

我有2个型号:

class Book < ActiveRecord::Base
  has_many :book_versions
  accepts_nested_attributes_for :book_versions, allow_destroy: true
  validates_associated :book_versions

class BookVersion < ActiveRecord::Base
  has_many :collection_items
  has_many :collections, through: :collection_items
  belongs_to :book
  validates_presence_of :price, :isbn #<-- validates presence

当我去书籍/新书并创作一本有多本书版本的书时,一切都很好用。当我离开价格或isbn空白时,验证会触发。

然而,在我创建了一本包含多个图书版本的图书后,我又回到了编辑表单并删除了现有关联book_version的价格之一,并且我提交了图书表单,它“成功更新了图书”。这里有两个问题:

  1. validates_presence_of :price未被解雇
  2. 书籍版本实际上没有更新。
  3. 以下是部分参数的副本:

      

    “book_versions_attributes”=&gt; {“0”=&gt; {“name”=&gt;“alt”,“isbn”=&gt;“”,   “price”=&gt;“”,“famis_number”=&gt;“”,“famis_price”=&gt;“”,   “weight_in_pounds”=&gt;“”},“1”=&gt; {“name”=&gt;“bb”,   “isbn”=&gt;“123123123123222222”,“price”=&gt;“”,“famis_number”=&gt;“”,   “famis_price”=&gt;“”,“weight_in_pounds”=&gt;“1.0”,“库存”=&gt;“08”,   “id”=&gt;“1030”},...

    所有内容都应该“保存”,但是当我检查数据库时,bb book_version仍然有旧价格。

    为什么它会默默地失败,为什么我的验证没有被解雇?

0 个答案:

没有答案