1

我的应用程序中有一个Business模型,它将存储有关

  • 餐厅
  • 酒吧
  • 专卖店
  • 美发沙龙
  • ETC

一些企业共享属性/设施:

  • 无线上网
  • 空调
  • 可访问性
  • ETC..

但有些特定于单一类型的企业,例如餐馆:

  • 取出
  • 送货
  • 着装规范
  • 户外座位

我想知道在数据库中对这些信息进行建模的最佳方法是什么?

我目前的想法:

使用单个表来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 ):创建一个名为amenities. 然后在business.rb

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