0

カテゴリモデルがあります

   default_scope :order => 'display_order asc'
   has_many :resources, :dependent => :destroy

# == Schema Information
#
# Table name: categories
#
#  id          :integer(4)      not null, primary key
#  name        :string(255)
#  description :string(255)
#  created_at  :datetime        not null
#  updated_at  :datetime        not null
#

私はリソースモデルを持っています:

belongs_to :category
  # belongs_to :submitter, :class_name => 'User', :foreign_key => "submitter_id"
  has_and_belongs_to_many :filetypes
  has_many :users, :through => :kits
  has_many :kits
  belongs_to :submitter, class_name: "User"
  belongs_to :author

==スキーマ情報

#
# Table name: resources
#
#  id                 :integer         not null, primary key
#  title              :string(255)
#  url                :string(255)
#  description        :string(255)
#  price              :decimal(, )
#  created_at         :datetime        not null
#  updated_at         :datetime        not null
#  category_id        :integer
#  image_file_name    :string(255)
#  image_content_type :string(255)
#  image_file_size    :integer
#  image_updated_at   :datetime
#  status             :string(255)
#  submitter_id       :integer
#  author_id          :integer
#

クライアントは、カテゴリを作成できることを望んでいますが、カテゴリに応じてリソースに異なる属性を割り当てます。

例:作成されたカテゴリ:'Books'たとえば、リソースモデルに保存されたフィールド'author'が必要です。

作成されたカテゴリ:'会議'たとえば、リソースモデルに'場所'、'日付'のフィールドを保存したいと考えています。

これをどのようにモデル化して、動的で長期的に維持しやすいようにすることができますか?

4

2 に答える 2

0

これをチェックアウトできます>> https://github.com/moiristo/dynamic_attributes

または、MongoDBやredisなどのスキーマレスデータベースの使用を検討していますか?

postgresqlのキー値タイプであるhstoreを使用することもできます。

于 2012-07-30T17:49:18.367 に答える
0

1つのアイデアは、カテゴリのフィールド専用に別のテーブルを用意することです。たとえば、セットアップは次のようになります。

category HABTM category_fields
category_field HABTM categories
category_field has_many category_field_values
category_field_value belongs_to category_field

次に、クライアントが新しいカテゴリを作成したとき、つまりBooks、クライアントは新しいcategory_fieldをそのカテゴリに追加できますauthor。次に、新しい著者をBooksカテゴリに追加する場合は、category_field_value(つまり、JK Rowling)をに追加しますauthor category_field

したがって、には、Books categoryがありauthor category_fieldauthor category_fieldには1つありますcategory_field_value(JKローリング)。

于 2012-07-23T22:43:35.810 に答える