我与id有关联,但是没有设置外键。
一些设置:
Foo has_many :bars
Bar belongs_to :foo
foo = Foo.new.save
bar = Bar.new(foo: foo)
输出:
bar.foo = foo
bar.foo.id = 1
bar.foo_id = nil # Why is this nil!?
除了分配bar.foo_id = 1
之外,是否有更新相关外键的方法,因此bar.foo_id == 1
不保存?
必须有某种#update_foreign_keys
或#update_associations
方法,对吧?
我使用Ruby 2.1.2运行Rails 4.2
答案 0 :(得分:1)
id由数据库设置,而不是由rails设置,这就是为什么是空的。
您需要保存每个对象才能获得ID。
您可以将对象保存在事务中,以便在需要执行任何魔法时获取该对象。
关于代码:
bar.foo = foo
bar.foo.id = 1 <- This retrieves the ruby#object_id
bar.foo_id = nil <- This retrieves the database#id
这就是为什么第二个是零。