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

今のところ、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) を取得するのは簡単ではありません。

おそらく別のモデル構造を使用したり、「土星」や「木星」などのすべてのタグに独自のモデルを使用したりする良い解決策はありますか?

4

0 に答える 0