新手问题 Rails model 设计求助

xiaogui · 2014年02月28日 · 最后由 xiaogui 回复于 2014年02月28日 · 2493 次阅读

最近在看大众点评网的开放平台,遇到一点小困惑。 假设说 business 模型转成 json 格式如下:

{
  "id": 2951611,  
  "name": "香草香草云南原生态火锅",  
  "regions": [  
    "海淀区",  
    "苏州桥"  
  ],  
  "categories": [  
    "火锅",  
    "婚宴酒店"  
  ],
  "deals": [  
    {  
      "id": "2-5105493",  
      "description": "香草香草云南原生态火锅!仅售75元,价值100元代金券1张!别样生态美食来袭,精心制作搭配巧妙!慕名觅美食,邂逅久难忘!",  
      "url": "http://dpurl.cn/p/+dHQKbRtQA"  
    }  
  ]
}

deals 属性属于一对多,我只需新建 deal 模型,然后在 business 模型中设置 has_many,在 deals 数据库增加 business_id 列,在 deal 模型设置 belongs_to 即可。 那么 business 模型的 regions 和 categories 该如何处理? 按多对多处理?设置 region 模型?然后在新建一关系表?如何生成

"regions": [  
    "海淀区",  
    "苏州桥"  
  ]

因为 regions 比较特殊,属于是字符串数组。而 deals 属性是一个对象列表。

#1 楼 @Yujing_Z 看了下,如果按字符串数组的话,情况跟你发的 gem 差不多。 如果按多对多处理?设置 region 模型?然后在新建一关系表?如何生成

"regions": [  
    "海淀区",  
    "苏州桥"  
  ]

嘞?

regions 里面应该是一个有层级关系的列表,不应该是多对多关系

categories 应该是类似 tag 的多对多,一般多对多有张中间关联表啦 比如 category 只有 id 和 name 两个字段,之后有关联表是 businesses_categories,里面就两字段:businesses_id 和 categories_id 可以看看这里的 2.6 The has_and_belongs_to_many Association

#3 楼 @ShiningRay 恩,大众点评的 api 中是一家店有时对应多个地区。 #4 楼 @Magic 恩,我去试下。之前普通那种多对对都 ok,只是这种字符串数组类型的之前没在 rails 这边处理过。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号