Rails имеет ассоциацию has_one :through
, которая помогает установить непосредственную связь с третьей моделью путем прохождения второй модели. Какая реальная польза от этого помимо создания ярлыка, в противном случае это был бы дополнительный шаг.
Взяв этот пример из руководства Rails :
class Supplier < ActiveRecord::Base
has_one :account
has_one :account_history, :through => :account
end
class Account < ActiveRecord::Base
belongs_to :supplier
has_one :account_history
end
class AccountHistory < ActiveRecord::Base
belongs_to :account
end
может позволить нам сделать что-то вроде:
supplier.account_history
, который в противном случае был бы достигнут как:
supplier.account.history
Если это только для более простого доступа, то технически может существовать взаимно-однозначное сопоставление, связывающее модель с некоторой n-й моделью, проходящей через n-1 модели для более легкого доступа. Есть ли что-то еще, что я пропускаю, кроме ярлыка?