私の目的のために選択するのに最適な構造を持つ日以来、私はそれ以上進んでいません。私は持っている:
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
今のところ、3 つの主要なカテゴリがあります。すべての画像は、「太陽系」、「天の川」、または「宇宙」に属しています。土星の画像があるとしましょう。「土星」と「太陽系」というタグを付けます。土星の月の画像には、さらに「月」のタグが付けられます。アンドロメダ銀河の画像には、「宇宙」と「銀河」のタグが付けられます。
たとえば、太陽系のすべての画像を次の URL で表示したい場合: www.website.com/solarsystem
木星や土星などへのリンクがあります。Saturn をクリックすると、URL は次のようになります: www.website.com/solarsystem/saturn ...「Saturn」でタグ付けされたすべての画像が表示されます。
この場合、リンクとしてのカテゴリ構造 (これも表示されます) は次のようになります。
ホーム > 太陽系 > 土星
すべてのカテゴリはクリック可能で、カテゴリの画像に移動できます。画像、タグ、タグ付けモデルでは、これらすべてを実現するのは非常に困難です。たとえば /image/show.html では、画像のタグに依存するため、カテゴリ構造の正しいリンクを表示するのに問題があります。たとえば、tag.name = 'Saturn' の場合、最初のリンクは「Solar System」になります。tag.name = 'Galaxy' の場合、最初のリンクは「Universe」になります。しかし、多くのタグと組み合わせを使用すると、かなり混乱します。また、正しい URL (www.website.com/solarsystem/saturn) を取得するのは簡単ではありません。
おそらく別のモデル構造を使用したり、「土星」や「木星」などのすべてのタグに独自のモデルを使用したりする良い解決策はありますか?