1
我有一個Ruby on Rails應用程序,其中代碼直接直接訪問多對多連接表。這使得修改某些代碼非常困難,因爲它繞過了通過has_many和has_many:through關係創建的常規關聯和方法。直接訪問多對多連接表的任何好理由?
我的問題很簡單,這是一個可以接受的事情要做還是應該避免?
在我看來,從數據庫的角度來看,邏輯視圖中不存在連接表。因此,應該沒有理由直接訪問它們。人們應該忽略它們甚至存在並讓框架照顧它們。
別人怎麼看?
更確切地說,我想知道如果下面都不應出現在代碼:
Person { name }
Group { name }
PersonGroup { person_id, group_id, membership_state }
PersonGroup.find(:all, :conditions => {:membership_state => 'pending'} }
我想,而不是使用連接表,一個應改爲範圍的要求對本集團並找到所有未決成員的方式。
我在我的問題上有點不清楚。我指的是使用activerecord模型來表示連接表,絕對不能直接訪問表。 – 2010-08-16 16:50:31
這很有意義,因爲PersonGroup不僅僅充當連接表,而且充當具有狀態的對象,在這種情況下爲membership_state。成爲自己的對象而不僅僅是一個命名的範圍是明智的。 – 2010-08-16 20:42:51