1

自从为我的目的选择最好的结构以来,我没有走得更远。我有:

class Image < ActiveRecord::Base
  attr_accessible :date, :description, :name, :image, :tag_ids

  has_many :taggings, :dependent => :destroy
  has_many :tags, :through => :taggings
  mount_uploader :image, ImageUploader
end

然后:

class Tag < ActiveRecord::Base
  attr_accessible :name
  has_many :taggings, :dependent => :destroy
  has_many :images, :through => :taggings
end

和:

class Tagging < ActiveRecord::Base
  belongs_to :image
  belongs_to :tag
  attr_accessible :image_id, :tag_id
end

我现在有三个主要类别,所有图像都属于“太阳系”、“银河系”或“宇宙”。假设我有一张土星的图像,所以我将其标记为“土星”和“太阳系”。土星卫星的图像将进一步标记为“月亮”。仙女座星系的图像将被标记为“宇宙”和“星系”。

如果我想显示所有图像,例如带有 url 的太阳系图像:www.website.com/solarsystem

应该有到例如木星或土星的链接。如果我单击土星,则 url 应为:www.website.com/solarsystem/saturn ...它会显示所有带有“土星”标签的图像。

在这种情况下,作为链接的类别结构(也将显示)应为:

主页 > 太阳系 > 土星

所有类别都是可点击的,并引导您进入该类别的图像。使用 Image、Tag 和 Tagging 模型,我发现很难实现所有这些。例如,在 /image/show.html 中,我无法显示类别结构的正确链接,因为它们取决于图像的标签。例如,我需要说如果 tag.name = 'Saturn' 那么第一个链接应该是“太阳系”。如果 tag.name = 'Galaxy',则第一个链接应为“Universe”。但是对于许多标签和组合,它会变得相当混乱。正确的网址(www.website.com/solarsystem/saturn)对我来说也不容易实现。

有没有一个好的解决方案,也许有另一个模型结构,也许有一个自己的模型来处理所有标签,比如“土星”或“木星”?

4

0 回答 0