Расширяя сообщение , предложенное Джинешем, общую концепцию можно объяснить следующим образом:
Ассоциация belongs_to
задается полем в таблице, которое указывает на запись в другой таблице. Например, если вы хотите смоделировать Person
и их адрес, у вас есть
class Person
has_one :address
end
class Address
belongs_to :person #Has a field person_id
end
Но тогда, если у вас есть другая модель Company
, которая также будет использовать адреса, вам придется разделить поле person_id
. Таким образом, вы делаете его addressable_id
, а Person и Company являются «адресуемыми» объектами для модели Address. Итак, при указании
class Person
has_one :address, :as => :addressable
end
вы говорите Rails, что всякий раз, когда вы будете искать адрес человека, он будет искать в поле addresable_id
таблицы адресов.