小编典典

inverse_of 是做什么的?它生成什么 SQL?

all

我正在努力解决inverse_of问题,但我不明白。

如果有的话,生成的 sql 是什么样的?

如果与、和inverse_of一起使用,该选项是否表现出相同的行为?:has_many``:belongs_to``:has_many_and_belongs_to

对不起,如果这是一个如此基本的问题。

我看到了这个例子:

class Player < ActiveRecord::Base
  has_many :cards, :inverse_of => :player
end

class Card < ActiveRecord::Base
  belongs_to :player, :inverse_of => :cards
end

阅读 177

收藏
2022-08-15

共1个答案

小编典典

文档来看,该选项似乎:inverse_of是一种避免
SQL 查询的方法,而不是生成它们。这是对 ActiveRecord 使用已加载数据而不是通过关系再次获取数据的提示。

他们的例子:

class Dungeon < ActiveRecord::Base
  has_many :traps, :inverse_of => :dungeon
  has_one :evil_wizard, :inverse_of => :dungeon
end

class Trap < ActiveRecord::Base
  belongs_to :dungeon, :inverse_of => :traps
end

class EvilWizard < ActiveRecord::Base
  belongs_to :dungeon, :inverse_of => :evil_wizard
end

在这种情况下,调用dungeon.traps.first.dungeon应该返回原始dungeon对象,而不是像默认情况下那样加载新对象。

2022-08-15