【发布时间】:2012-01-15 12:45:59
【问题描述】:
我有以下模型设置:
User
- has_many File (for userpics)
Gallery
- has_many File (for images)
Page
- has_one File (for background image)
Page 对象可以与一个或多个 Gallery 对象共享一个 File 对象作为其背景。之后的某个阶段会出现一个新模型,例如
Product
- has_many File
或类似的可以出现在应用程序中。
请注意,我需要一个 File 模型,而不仅仅是存储实际文件的路径,因为 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
原因:我想要一个通用的 App 模块来检查“孤立”文件,并且还能够告诉每个文件附加了什么,因此,例如,当从图库中删除文件时,应用程序会警告该文件仍作为背景附加到页面。
【问题讨论】:
标签: orm kohana kohana-3 kohana-orm