У меня есть следующие настройки моделей:
User
- has_many File (for userpics)
Gallery
- has_many File (for images)
Page
- has_one File (for background image)
Объект страницы может совместно использовать объект File с одним или несколькими объектами Gallery для своего фона.А на каком-то этапе позже в приложении может появиться новая модель, такая как
Product
- has_many File
или аналогичная.
Обратите внимание, что мне нужна модель файла, а не просто хранение путей к фактическим файлам, посколькуФайловая модель может ссылаться, фактически, на несколько файлов в файловой системе
File
- id
- path
- path_poster
- path_m4v (HTML5 videos need up to three files for compatibility)
- path_webm
- path_ogv
- width
- height
- poster_width
- poster_height
- type
- ... etc....
Итак, существует ли простой способ (без перезаписи всего класса ORM) реализовать отношения, которые бы использовали «универсальную» сводную таблицу сследующие поля:
model_name VARCHAR(8) (or model_type_id TINYINT for speed)
model_id INT
file_id INT
relation_name VARCHAR(8) (e.g., Page model can have "background" and "logo" relation)
position INT
Причина: я хочу иметь универсальный модуль приложения для проверки «потерянных» файлов, а также иметь возможность определить, к какому файлу прикреплен каждый файл, например,при удалении файла из галереи приложение предупреждает, что файл все еще прикреплен к странице в качестве фона.