有没有直接访问多对多连接表的理由?

时间:2010-08-16 16:09:43

标签: ruby-on-rails activerecord many-to-many

我有一个Ruby on Rails应用程序,其中代码直接访问多对多连接表。这使得修改一些代码非常困难,因为它绕过了通过:has_many和:has_many:通过关系创建的正常关联和方法。

我的问题很简单,这是可以接受的,还是应该避免?

在我看来,从数据库的角度来看,逻辑视图中不存在连接表。因此,没有理由直接访问它们。人们应该忽略它们甚至存在并让框架照顾它们。

别人怎么想?

更确切地说,我想知道以下代码是否应出现在代码中:

Person { name }
Group { name }
PersonGroup { person_id, group_id, membership_state }
PersonGroup.find(:all, :conditions => {:membership_state => 'pending'} }

我认为不应该使用连接表,而是应该将请求范围扩展到组,并找到所有待处理的成员。

1 个答案:

答案 0 :(得分:0)

我会选择“应该避免”。如果你真的需要操作连接表中的数据,我建议创建一个映射到该表然后操纵该对象的ActiveRecord对象。一般来说,我发现使用Object / Relational框架(不仅仅是ActiveRecord)导致并发症时会直接进行数据操作。