如果我的图片链接 = 你的附件,我的图片 = 你的页面,我的项目 = 你的图片,我的场景 = 你的文件(或者它已经太久了,我不记得我自己的代码正确),也许类似于此。
class Project
has_many :imagelinks, :as => :displayable, :dependent => :destroy
has_many :images, :through => :imagelinks
end
class Scenario
has_many :imagelinks, :as => :displayable, :dependent => :destroy
has_many :images, :through => :imagelinks
end
class Unittest
has_many :imagelinks, :as => :displayable, :dependent => :destroy
has_many :images, :through => :imagelinks
end
class Imagelink
# attributes: id, image_id, displayable_id, displayable_type
belongs_to :image
belongs_to :displayable, :polymorphic => true
belongs_to :project, :class_name => 'Project', :foreign_key => 'displayable_id'
belongs_to :scenario, :class_name => 'Scenario', :foreign_key => 'displayable_id'
belongs_to :unites, :class_name => 'Unittest', :foreign_key => 'displayable_id'
end
class Image
has_many :imagelinks, :dependent => :destroy
has_many :projects, :through => :imagelinks, :source => :project, :conditions => "imagelinks.displayable_type = 'Project'"
has_many :scenarios, :through => :imagelinks, :source => :scenario, :conditions => "imagelinks.displayable_type = 'Scenario'"
has_many :unittests, :through => :imagelinks, :source => :unittest, :conditions => "imagelinks.displayable_type = 'Unittest'"
has_attached_file :asset, :styles => { blah blah blah }
end