Является ли imageable
моделью в руководстве по Ruby on Rails? И есть ли у imageable
таблица базы данных?
Как imageable_id
указывает на два разных атрибута id
для Сотрудника и Продукта?
Является ли imageable
моделью в руководстве по Ruby on Rails? И есть ли у imageable
таблица базы данных?
Как imageable_id
указывает на два разных атрибута id
для Сотрудника и Продукта?
Нет, на странице, на которую вы ссылаетесь, imageable представляет собой полиморфную ассоциацию либо с Сотрудником, либо с Продуктом. Для того, чтобы полиморфная ассоциация работала, рельсам необходимо будет определить «тип» объекта (т. е. «Сотрудник» или «Продукт»), просмотрев запись «imageable_type» в базе данных, а затем идентификатор соответствующего объекта (imageable_id ).
Например, запись в базе данных imageable_type => «Сотрудник» и imageable_id => «4». ActiveRecord обнаружит, что ассоциация связана с идентификатором 4 в таблице сотрудников.
imageable_type помогает рельсам понять, к какому классу принадлежит модель. При создании модели, если вы используете imageable:references
, то rails автоматически создаст столбцы imageable_id и imageable_type в вашей миграции.
Imageable не является моделью. Это заполнитель для какой-то модели (в данном случае это Сотрудник или Продукт).
То, как imageable_id
может указывать на разные типы идентификаторов, заключается в том, что Picture также имеет атрибут imageable_type
. Для данного экземпляра Picture он знает, какой тип идентификатора imageable_id
представляет, глядя на его imageable_type
.