2017-07-19 82 views
0

我试图确定为什么我不能够获得一个模型的ID被保存到数据库后:activerecord-sqlserver-adapter .save!不返回一个ID

request.attributes = attributes 
request.touch 
request.save! 
puts request.inspect 

控制台打印:

#<Request id: nil, ...> 

使用:

activerecord (4.2.9) 
activerecord-sqlserver-adapter (4.2.18) 
activesupport (4.2.9) 
rails (4.2.9) 

回答

0

你可以尝试重新加载模型,并再次检查它:

request.reload 
puts request.last.inspect 

虽然根据您的代码片段模型必须坚持 - save!否则会抛出错误。

P.S.我宁愿对你的问题发表评论,但没有足够的声望。

+0

看来'reload'期待请求有一个ID,它似乎并不:在“find_with_ids” ':没有ID找不到请求(ActiveRecord的:: RecordNotFound)' – blgrnboy

+0

那意味着模型不被持久化。也许出于某种奇怪的原因,在rails控制台中禁用日志记录,并且只是看不到错误,请在保存请求之前尝试明确地将其打开:“ActiveRecord :: Base.logger.level = Logger :: INFO”。尽管必须在任何情况下显示验证错误。 调试的另一个想法是:检查记录是否真的被插入到数据库中(比如说,在'rails dbconsole'或'psql'中,如果你使用PostgreSQL的话)。只是为了确保ActiveRecord方面存在这个问题。 – tap349