1

セットアップしようとしているモデルが 3 つあります。場所/会場、カテゴリ、近隣です。

Location には親カテゴリとサブカテゴリが必要ですが、その Neighborhood はオプションです。カテゴリ モデルには、トップレベルのカテゴリまたはサブカテゴリがあります。

上記を考えると、これはモデルの関連付けを定義する正しい方法ですか?

class Location < ActiveRecord::Base
  attr_accessible # location-specific columns

  belongs_to :category
  belongs_to :parent_category, :class_name => "Category"
  belongs_to :neighborhood
end

class Category < ActiveRecord::Base
  has_many :locations
  has_many :subcategories, :class_name => "Category", :foreign_key => "parent_category_id"
  belongs_to :parent_category, :class_name => "Category"
end

class Neighborhood < ActiveRecord::Base
  has_many :locations
end

(実際、適切なRails Guideをさらに読んだ後、代わりにポリモーフィックな関連付けの方が適しているように見えますか?)

4

1 に答える 1

0

ロケーションとカテゴリの関係をどのように機能させたいかによって多少異なります。ただし、場所がサブカテゴリとカテゴリに属している必要があると言っている場合は、場所が単にサブカテゴリ (カテゴリを持つ) に属している必要があることを意味しているようです。したがって、場所の「parent_category」が冗長であることを除いて、関連付けは正しいと思います。

たとえば、次のものがあったとします。

    music = Category.create {title: 'Music'}
    rock = Category.create {title: 'Rock', parent_category_id: music.id} 
    location = Location.create {title: 'The Fillmore', category_id: rock.id}

これで、「ロック」というカテゴリの場所ができました。次のように、それが親カテゴリ (「音楽」) であることがわかります。

    location.category.parent_category

そして、あなたが概説したことを考えると、ポリモーフィックな関連付けの必要性はわかりません。

于 2012-06-29T00:02:57.500 に答える