代码之家  ›  专栏  ›  技术社区  ›  insane.dreamer

ActiveRecord关联阻止保存记录

  •  0
  • insane.dreamer  · 技术社区  · 14 年前

    我在两个模型之间有一个直接的关系:资产和更新。

    两种模型(减去不相关的方法)如下:

    http://pastie.org/1062627

    我遇到了一个问题,资产记录将不再更新。例如,一个简单的测试:

    a = Asset.first ; puts a.description; a.description = "new" ; a.save ; puts a.errors ; puts Asset.first.description 
    

    将产生:

    "old"   {}    "old"
    

    a.save返回true,a.errors为空;但未保存更改。

    我仔细检查了我的资产模型中的每一项,试图找出是什么导致了它,发现如果我删除了“属于:更新”关系,那么一切都会正常工作。

    但是,与另一个表的关系,如果不涉及验证,如何阻止保存记录,这是一个谜。(另外,如果是验证问题,则@asset.errors在尝试保存时不会为空。)

    为了让事情变得更奇怪,我决定将更新模型重命名为报告模型。有了它,一切都很顺利。所以更新可能是模型的保留名称(似乎不太可能)。但我不想重新命名这个模型,除非我必须(它已经有太多的地方了),所以我想这里肯定还有别的地方出错或者我找不到了。

    感谢您的帮助。谢谢。

    1 回复  |  直到 14 年前
        1
  •  0
  •   Jared Hales    14 年前

    调用关联“update”是一个问题。要加载资产的关联更新,必须执行以下操作:

    @asset.update
    

    但update是一个已经由ActiveRecord定义的实例方法:

    http://apidock.com/rails/ActiveRecord/Base/update