我一直在閱讀有關inverse_of和我在網上看到的所有內容似乎都不一致並且讓我困惑。如果你看看here,你可以看到在ActiveRecord中rails3的inverse_of有什麼限制
有一些限制inverse_of支持:通過協會:
- 他們不會一起工作。
- 它們不適用於:多態關聯。
- 他們不與:作爲協會。
- 對於belongs_to關聯,忽略has_many反向關聯。
但正上方的是,他們給這個例子
class Customer < ActiveRecord::Base
has_many :orders, :inverse_of => :customer
end
class Order < ActiveRecord::Base
belongs_to :customer, :inverse_of => :orders
end
我覺得他們說的第一inverse_of什麼都不做,但如果是這樣,爲什麼他們這樣做?
此外,即使上述事情說inverse_of不通過關聯設定工作,this page說
如果您使用的連接模型belongs_to的,它是設置一個好主意:在belongs_to的inverse_of>選項,這將意味着下面的例子可以正常工作,其中>標籤是的has_many:通過協會):
,並給出這個例子
@post = Post.first
@tag = @post.tags.build :name => "ruby"
@tag.save
最後一行應該保存通過記錄(一個Taggable)。 inverse_of設置:如果>這隻會工作
class Taggable < ActiveRecord::Base
belongs_to :post
belongs_to :tag, :inverse_of => :taggings
end
對我來說,這一切似乎是不一致的,高度混亂。但總的來說,我認爲在每一個關係上只是說反義詞並沒有什麼壞處。那是問題嗎?我見過很多人在SO上提出這樣的問題,並沒有看到任何人的堅定或肯定。