Проблема проектирования базы данных Rails 3 пользователя - наследование одной таблицы или? - PullRequest
1 голос
/ 18 апреля 2011

Я работаю над приложением равноправного кредитования, в котором есть несколько типов пользователей (то есть заемщиков, кредиторов, спонсоров и т. Д.), Которые имеют разные поля.Более того, некоторые из этих пользователей могут принадлежать двум вещам (т.е. кредиторы также могут быть спонсорами).Итак, является ли наследование одной таблицы хорошей идеей в этом случае?И если так, может ли один пользователь принадлежать к двум группам только с одним полем типа?И если ИППП не подходит, каков наилучший способ сделать это?В конце концов, использование разных таблиц потребует сохранения одной и той же информации в нескольких базах данных, что кажется неэффективным.

Заранее спасибо за любую помощь !!

Ответы [ 2 ]

1 голос
/ 18 апреля 2011

Я думаю, можно с уверенностью предположить, что роль каждого пользователя определяется типом аренды / сделки.То есть, если у нас есть сделка D1 и два пользователя U1 и U2, то именно эта сделка определяет, является ли U1 спонсором или заемщиком.

Я предлагаючтобы оставить иерархию пользователей в качестве ИППП и ввести другой класс, скажем DealUserRole (Deal, User, Role).

0 голосов
/ 29 апреля 2011

Вы можете использовать камень, над которым я работал (CITIER) - http://peterhamilton.github.com/citier, чтобы сделать ваше наследство, все еще в разработке, но в настоящее время функционирует нормально.Гораздо приятнее, чем STI, если в разных классах много уникальных полей.STI оставил бы их Null.Плюс MTI более расширяемый позже.Я согласен, что вам также необходимо ввести роль для пользователей.Но я думаю, что с помощью этого вы можете связать его с родителем (класс пользователя), чтобы он применялся ко всем подтипам пользователя.

class User < ActiveRecord::Base
   has_many :roles
end

class Role < ActiveRecord::Base
   acts_as_citier
   has_many :users
end

class Borrower < Role
   acts_as_citier
   #Other borrower stuff
end

class Lender < Role
   acts_as_citier
   #Other lender stuff
end

и т.

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