1

アプリケーションにBusinessモデルがあり、次の情報が保存されます。

  • レストラン
  • バー
  • 店舗
  • ヘアサロン

一部の企業は属性/アメニティを共有しています。

  • Wi-Fi
  • 交流
  • アクセス可能性
  • 等..

ただし、レストランなど、単一のタイプのビジネスに固有のものもあります。

  • テイクアウト
  • 配達
  • ドレスコード
  • 屋外席

DBでこの情報をモデル化する最良の方法は何でしょうか。

私の現在の考え:

Businessすべての情報と属性を保持する単一のテーブルを使用します。ほとんどの属性はブール値であるため、属性がビジネスタイプに適用されない場合は、単に。になりますfalse

しかし、これを行うためのより良い方法があるかどうかはわかりません。また、ビューレベルでこれらの違いを処理する方法についてもわかりません。たとえば、ビジネスを作成するときに、ビジネスタイプに適用できる属性を表示/設定するオプションが必要です。

4

1 に答える 1

1

それが私がする方法です。business_type表示する属性を選択できるという属性が必要です。たとえば、ショービューでは次のようになります。

<% if @business.business_type == "restaurant" %>
  Provides take out: <%= @business.take_out %>
<% end %>

jQueryを使用して、レストランの種類に基づいて、新しいフォームで使用できるフィールドを変更できます。

<%= f.select :business_type, [["Restaurant", "restaurant"], ["Store", "store"]] %>
<script>
  $('#business_business_type').change(function(){
    // hide or show fields here based on this.value
  });
</script>

大量のデータベース列を避けたい場合は、Rails 3.2(このページの3/4)でKey-Valueストアを使用できます。という名前の列を作成しますamenities。次にbusiness.rb

store :amenities, accessors: [:wifi, :ac, :accessibility, ...]
于 2012-11-03T16:21:05.987 に答える