Ruby on rails 的逆\u在\u初始化后在内部不起作用

Ruby on rails 的逆\u在\u初始化后在内部不起作用,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,初始化回调后,似乎的逆函数在内部不起作用 class User < ActiveRecord::Base has_many :faces, :inverse_of => :user end class Face < ActiveRecord::Base belongs_to :user, :inverse_of => :faces after_initialize :init def init p user.object_id end end

初始化回调后,似乎的逆函数在内部不起作用

class User < ActiveRecord::Base
has_many :faces, :inverse_of => :user
end

class Face < ActiveRecord::Base
  belongs_to :user, :inverse_of => :faces
  after_initialize :init

  def init
    p user.object_id
  end
end

u = User.find(56)
u.object_id
 => 70242500754120 

u.faces.first.user.object_id
  Face Load (0.3ms)  SELECT `faces`.* FROM `faces` WHERE `faces`.`user_id` = 56 LIMIT 1
  User Load (0.4ms)  SELECT `users`.* FROM `users` WHERE `users`.`id` = 56 LIMIT 1
70242477010060
 => 70242500754120 

u.faces.first.user == u
 => true
class用户:user
结束
类面:faces相反
初始化后:初始化
def初始化
p user.object\u id
结束
结束
u=用户查找(56)
u、 对象id
=> 70242500754120 
u、 faces.first.user.object\u id
面载荷(0.3ms)从“面”中选择“面”。“用户id”=56限制1
用户加载(0.4ms)从“用户”中选择“用户”。“用户id”=56限制1
70242477010060
=> 70242500754120 
u、 faces.first.user==u
=>正确
回调内部有不同的对象,但外部是相同的。 看起来像是在设置魔法逆_之前调用的回调

有没有建议解决方法,允许在初始化回调后访问内部相同的对象?
谢谢

init方法实际上是从数据库中获取用户对象并再次返回

每次你初始化一个面,应用程序都会向数据库询问用户,实例化它,打印对象的id。。。忘了它吧

我建议使用具有以下范围的用户:

class Face
  belongs_to :user

  scope :with_user, -> { joins(:user) }
end

这将保存对数据库的调用:)

能否在不起作用的地方包含代码段?我在寻找这样的东西:
f=Face.new
或您希望此回调在哪里工作。@burninggramma
u.faces
是它不起作用的地方:
#faces
关联方法为每个关联记录实例化一个
Face
实例。