有很多这样的问题,但我找不到一个似乎可以回答具体问题的问题 - 如果这是重复的,请道歉。
我有一个模型,我们称它为 Shark,定义非常简单(这里,注释:)
# == Schema Information
#
# Table name: sharks
#
# id :integer not null, primary key
# created_at :datetime not null
# updated_at :datetime not null
# origination_entry :integer
#
class Shark < ActiveRecord::Base
belongs_to :originator, class_name: "Shark", foreign_key:"id"
attr_accessible :origination_entry
end
具体来说,数据库中的“origination_entry”列应该是指向同一张表Sharks的外键。这个想法是每个条目都可能具有这种关系,否则它将指向另一个对象,该对象是 this 的“发起者” 。(通过“发起人”,我指的是先前的例子——相信我,这在更多背景下是有意义的。)null
Shark
Shark
Shark
不幸的是,这似乎不起作用。
irb(main):001:0> shark1 = Shark.new(idnumber:"foo")
=> #<Shark id: nil, idnumber: "foo", created_at: nil, updated_at: nil, origination_entry: nil>
irb(main):002:0> shark1.save()
=> true
irb(main):003:0>
irb(main):004:0* shark2 = Shark.new(idnumber:"foo", origination_entry:shark1.id)=> #<Shark id: nil, idnumber: "foo", created_at: nil, updated_at: nil, origination_entry: 3>
irb(main):005:0> shark2.save()
=> true
irb(main):006:0> shark2
=> #<Shark id: 4, idnumber: "foo", created_at: "2012-06-26 22:35:19", updated_at: "2012-06-26 22:35:19", origination_entry: 3>
irb(main):007:0> shark2.originator
=> nil
(我剪掉了一些 SQL 查询,让我知道它们是否会有所帮助。)
为什么会回来nil
?我怎样才能让它返回shark1
的对象?
谢谢!