Ruby on rails rails model.save返回true,但不保存到db
我在模型中有一个函数,它在保存后执行一些操作 在该函数中,我有以下代码Ruby on rails rails model.save返回true,但不保存到db,ruby-on-rails,rails-activerecord,Ruby On Rails,Rails Activerecord,我在模型中有一个函数,它在保存后执行一些操作 在该函数中,我有以下代码 progression = Progression.find_by_id(newprogression) if progression.participation_id.nil? progression.participation_id = participation.id progression.save else 我看到的是,进展没有得到更新。即使下面 如果我在保存之前检查progression.partic
progression = Progression.find_by_id(newprogression)
if progression.participation_id.nil?
progression.participation_id = participation.id
progression.save
else
我看到的是,进展没有得到更新。即使下面
- 如果我在保存之前检查progression.participation\u id,则它已被更新
- 如果在调试器中手动运行progression.save,则返回true
progression = Progression.find_by_id(newprogression)
if progression.participation_id.nil?
progression.update_attributes(
:participation_id => participation.id
)
else
这可能是缓存问题。从中,您可能希望通过传递true来重新加载缓存。如果您通过参与检查,在通过渐进建立链接后,您可能会遇到这种情况 假设进步属于参与 你能试试:progression.participation=参与,然后progression.save吗
另外,试试:participation.progressions我对Rails还是相当陌生,但每次我保存一些东西时,我都必须使用bang方法。您是否尝试过
progression.save代码>保存
和保存后的在同一事务中运行。也许这是个问题。在提交
回调后尝试使用,好的,我遇到了同样的问题,我设法解决了。
问题在于关联名称。我有一个名为User的模型和一个名为Update的子模型,其中每个用户都有许多新的更新。因此,在user.rb中,我有一行:
has_one :update
在我删除这一行之后,一切又开始工作了。看起来这是rails保留的名称,在创建模型时不应使用它。也许你也有同样的问题。很遗憾,Rails没有指出这个问题。不应该这样。也许验证失败了。但它们在手动保存时也会失败。所以不确定。不,那也不行。感谢您的思考感谢您的回复,该操作实际上针对的是与after_save所指的不同的模型,所以我不确定这是否适用?如果你使用关系(我假设你使用命名),我能想到的最后一件事就是使用progression.participation=participation