Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails:在模型保存中创建或更新_Ruby On Rails - Fatal编程技术网

Ruby on rails Rails:在模型保存中创建或更新

Ruby on rails Rails:在模型保存中创建或更新,ruby-on-rails,Ruby On Rails,我有一个带有两个字段的模型(书签),称它们为a和B。 创建新模型时,我必须对B执行相当复杂的检查,如果true则更新数据库中的书签(将a设置为正在传递的书签),并中止创建,如果false则保持该状态并创建新书签 所以我在创建之前设置了一个过滤器。调用的函数的问题是,如果我对从中检索到的对象执行更新\u属性,然后返回false(为了中止保存),则不会执行更新(出于某种原因我不知道) update_attributes返回true,没有错误,但在日志中我只看到 SQL (0.2ms) 如果我没有

我有一个带有两个字段的模型(书签),称它们为a和B。 创建新模型时,我必须对B执行相当复杂的检查,如果
true
则更新数据库中的书签(将a设置为正在传递的书签),并中止创建,如果
false
则保持该状态并创建新书签

所以我在创建之前设置了一个过滤器。调用的函数的问题是,如果我对从中检索到的对象执行更新\u属性,然后返回false(为了中止保存),则不会执行更新(出于某种原因我不知道)

update_attributes返回true,没有错误,但在日志中我只看到

SQL (0.2ms) 

如果我没有返回false,记录将正确更新,但它也会插入一条新记录(我不希望这样)。有什么帮助吗?

使用回调时,在创建回调之前从
中调用
更新\u属性
,都会将其禁用

我也意外地被这咬了一口。我想这是源于rails api,在一行程序中,或者是一篇我现在想不起来的博客文章,对不起

这个复杂的电话不是验证吗


或者您可以拉出update_属性,在复杂的逻辑之后使用它

使用回调时,在创建
回调之前从
中调用
update\u属性
都会将其禁用

我也意外地被这咬了一口。我想这是源于rails api,在一行程序中,或者是一篇我现在想不起来的博客文章,对不起

这个复杂的电话不是验证吗


或者您可以拉出update_属性,在复杂的逻辑之后使用它

取消回调

如果before_*回调返回false,则将取消所有后面的回调和相关操作。如果after_*回调返回false,则将取消所有后面的回调。回调通常按照它们定义的顺序运行,但作为模型上的方法定义的回调除外,它们最后被调用


取消回调

如果before_*回调返回false,则将取消所有后面的回调和相关操作。如果after_*回调返回false,则将取消所有后面的回调。回调通常按照它们定义的顺序运行,但作为模型上的方法定义的回调除外,它们最后被调用


在AR回调中返回false,根据设计,将中止整个事务。这就是这里发生的事吗?是的,想想看。有什么方法可以解决这个问题吗?观察者更适合这种情况吗?在AR回调中返回false设计上会中止整个事务。这就是这里发生的事吗?是的,想想看。有什么办法解决这个问题吗?观察员会更适合这种情况吗?嗨。呵呵,这个电话不是验证。如果我能在验证中执行更新,它会不会被阻止?嗨。呵呵,这个电话不是验证。如果我可以在验证中执行更新,它,它不会被阻止吗?嗨,谢谢你的澄清。你是说我不能用这种方式解决我的问题吗?在你创建代码之前发布你的代码,这样我们就可以看到你在做什么。嗨,谢谢你的澄清。你是说我不能用这种方式解决我的问题吗?在你创建代码之前发布你的文章,这样我们就可以看到你在做什么了。