我正在为一家药店设计一个ruby on rails应用程序,其中一个功能是有药剂师在那里工作的商店。此外,还有药剂师,他们可以在许多商店工作。这听起来像是HABTM的工作,对吧?嗯,作为一个新手,我手动设计了一个变通方法(因为我从来没有听说过HABTM -我基本上是自学rails,从来没有接触到一些更高级的关系)。现在,当保存一个药剂师时,在药剂师控制器的创建和更新操作中有几行代码,它将他们工作的商店转换成一个字符串,每个store_id用逗号分隔。然后,当显示一个商店时,它通过@pharmacists = Pharmacist.find :all, :conditions => "stores REGEXP '#{@store.id}'"发出MYSQL请求。
将这个系统转移到基于rails的HABTM系统上会更有效率吗?当然,它最终需要更少的代码,但它值得吗?换句话说,除了更少的代码,我还能从rails管理这个关联中获得什么好处呢?
发布于 2010-08-02 02:21:14
好处是你将使用正确的工具来完成这项工作!使用诸如Rails之类的框架的全部意义在于,它可以帮助您解决常见问题,而不必重新发明轮子,这就是您在这里所做的。通过使用关联,您还可以正确地使用关系数据库,并可以利用外键索引等好处,这将比字符串操作更快。
除非需要在连接模型上存储额外的属性(例如药剂师开始在商店工作的日期),否则应该使用has_and_belongs_to_many关系,在这种情况下使用has_many :through。
使用Rails关联将为您提供Rails提供的所有方便的方法,例如:
# 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').pharmacistshttps://stackoverflow.com/questions/3382837
复制相似问题