我正在努力解决inverse_of问题,但我不明白。
inverse_of
如果有的话,生成的 sql 是什么样的?
如果与、和inverse_of一起使用,该选项是否表现出相同的行为?:has_many``:belongs_to``:has_many_and_belongs_to
: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
从文档来看,该选项似乎:inverse_of是一种避免 SQL 查询的方法,而不是生成它们。这是对 ActiveRecord 使用已加载数据而不是通过关系再次获取数据的提示。
:inverse_of
他们的例子:
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对象,而不是像默认情况下那样加载新对象。
dungeon.traps.first.dungeon
dungeon