我有 Message 模型,它有大量的字段和表中大约 1000 万个条目。
现在我也有一个看起来像这样的 SomeItem 模型(它只有 1000 个条目):
class SomeItem < ActiveRecord::Base
belongs_to :item, :polymorphic => true # "Message" is one of the item types
end
现在有这两行连续的代码困扰我:
m = Message.new(:fild_one => 1, ...)
m.save
s = SomeItem.create(:item => m)
现在,如果看到m
在数据库中保存得很好:Sat, 05 Oct 2013 15:01:06 UTC +00:00
和s
那Sat, 05 Oct 2013 15:01:23 UTC +00:00
很好。
但是当我这样做时:
s.item_type it gives me "Message"
这很好,但是s.id it gives me nil
在 1000 个条目中有 3 个。
所以我的问题是:是否有一种延迟会阻止m
上一行中s
创建的用于下一行中创建的。
注意:1)消息表很大,包含数百万个条目
2) SomeItem 表很小,仅包含 1000 个条目
3)据我了解,rails 按顺序执行这两个句子,但这并不能解释这种行为。
之前有人注意到这一点,如果是的话,如果它是已知的事情,可以做些什么来防止这种情况发生?
提前致谢。我知道这个问题看起来很傻,但它是一个真实的场景,并且正在我的现场项目中发生。