使用活动记录在create上设置自引用的id

时间:2011-12-01 00:11:10

标签: ruby-on-rails activerecord

使用rails和active record,是否可以在创建时将id设置为自引用?

我遇到的问题是一个人是他们自己的主管。我想在person的create语句中设置supervisor_id字段。

class Person < ActiveRecord::Base
  belongs_to :supervisor, :class_name => "Person", :foreign_key => "supervisor_id"
  ...

Person.create(:name => "John Smith", :supervisor => ?self?)

从mysql的角度来看,我没有看到在单个查询中这是如何实现的。 rails有内置的方法吗?我目前的计划是一个标志和一个后创建。

1 个答案:

答案 0 :(得分:1)

由于在创建对象之后才分配id,因此在rails中执行此操作的最简单方法是使用after_create回调。

如果你想要真正进步,你可能能够做一个mysql触发器......但这似乎比它的价值更麻烦。