Как мне создать и использовать полиморфные отношения? - PullRequest
1 голос
/ 22 ноября 2010

Я новичок в Ruby и читаю о "полиморфных отношениях".

То, что я прочитал, было над моей головой. Можете ли вы помочь мне понять, что такое полиморфные отношения в простых терминах?

Ответы [ 2 ]

5 голосов
/ 22 ноября 2010

Расширяя сообщение , предложенное Джинешем, общую концепцию можно объяснить следующим образом:

Ассоциация 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 таблицы адресов.

3 голосов
/ 22 ноября 2010

Вы смотрели на это?http://wiki.rubyonrails.org/howtos/db-relationships/polymorphic

Было бы хорошо, если бы вы могли задать конкретные вопросы, которые вам трудно понять, чтобы сообщество могло решить эти вопросы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...