我在模型中有一个函数,它执行一些操作after_save
在该功能中,我有以下代码
progression = Progression.find_by_id(newprogression)
if progression.participation_id.nil?
progression.participation_id = participation.id
progression.save
else
我所看到的是,进展没有得到更新。即使以下
有什么想法吗?
答案 0 :(得分:1)
我仍然是Rails的新手,但每次我保存的东西,我都必须使用爆炸方法。你试过progression.save!
答案 1 :(得分:1)
好的,我有同样的问题,我设法处理它。 问题在于关联名称。我有一个名为User的模型和一个名为Update的子模型,它具有每个用户的新更新数。所以,在user.rb中我有这一行:
has_one :update
删除此行后,一切都重新开始了。看起来这是一个rails保留名称,在创建模型时不应该使用它。也许你在这里遇到了同样的问题。遗憾的是Rails并没有表明这个问题。
答案 2 :(得分:0)
尝试
progression = Progression.find_by_id(newprogression)
if progression.participation_id.nil?
progression.update_attributes(
:participation_id => participation.id
)
else
答案 3 :(得分:0)
这可能是一个缓存问题。从rails guide on AR Relations - Sec 3.1开始,您可能希望通过传递true来重新加载缓存。如果您在通过升级建立链接后通过参与进行检查,则可能会遇到此问题。
假设进步属于参与,
你可以试试:progression.participation =参与然后继续进行。
另外,尝试:participation.progressions<<进展和参与.save?
答案 4 :(得分:0)
save
和after_save
在同一个交易中运行。也许这是一个问题。尝试使用after_commit
回调