Есть ли какая-либо веская причина для прямого доступа к таблице присоединения «многие ко многим»? - PullRequest
1 голос
/ 16 августа 2010

У меня есть приложение на 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 голосов
/ 16 августа 2010

Я бы пошел с "следует избегать".Если вам действительно нужно манипулировать данными в объединяемой таблице, я бы предложил создать объект ActiveRecord, который сопоставляется с этой таблицей, а затем манипулировать этим объектом.В целом, я обнаружил, что прямое манипулирование данными при использовании объектно-реляционной инфраструктуры (а не только ActiveRecord) приводит к сложностям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...