首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rails has_and_belongs_to_many或手动实现

rails has_and_belongs_to_many或手动实现
EN

Stack Overflow用户
提问于 2010-08-02 00:44:27
回答 1查看 438关注 0票数 0

我正在为一家药店设计一个ruby on rails应用程序,其中一个功能是有药剂师在那里工作的商店。此外,还有药剂师,他们可以在许多商店工作。这听起来像是HABTM的工作,对吧?嗯,作为一个新手,我手动设计了一个变通方法(因为我从来没有听说过HABTM -我基本上是自学rails,从来没有接触到一些更高级的关系)。现在,当保存一个药剂师时,在药剂师控制器的创建和更新操作中有几行代码,它将他们工作的商店转换成一个字符串,每个store_id用逗号分隔。然后,当显示一个商店时,它通过@pharmacists = Pharmacist.find :all, :conditions => "stores REGEXP '#{@store.id}'"发出MYSQL请求。

将这个系统转移到基于rails的HABTM系统上会更有效率吗?当然,它最终需要更少的代码,但它值得吗?换句话说,除了更少的代码,我还能从rails管理这个关联中获得什么好处呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-08-02 02:21:14

好处是你将使用正确的工具来完成这项工作!使用诸如Rails之类的框架的全部意义在于,它可以帮助您解决常见问题,而不必重新发明轮子,这就是您在这里所做的。通过使用关联,您还可以正确地使用关系数据库,并可以利用外键索引等好处,这将比字符串操作更快。

除非需要在连接模型上存储额外的属性(例如药剂师开始在商店工作的日期),否则应该使用has_and_belongs_to_many关系,在这种情况下使用has_many :through

使用Rails关联将为您提供Rails提供的所有方便的方法,例如:

代码语言:javascript
复制
# Find the stores the first pharmacist works at
@stores = Pharmacist.first.stores

# Find the pharmacists who work at a store
@pharmacists = Store.find_by_name('A Store').pharmacists

  • A Guide to ActiveRecord Associations
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3382837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档