Я получаю много толчков от Rails, потому что я разделил пользователя на множество различных подклассов.В моем приложении не все пользователи равны.На самом деле существует много объектов модели, и не каждый тип User имеет к ним доступ.
Мне также нужен способ для полиморфного поведения.Например, многие методы будут вести себя по-разному в зависимости от типа.Разве это не то, для чего нужен полиморфизм?
Но дело в том, что я всегда получаю отпор от Rails.По умолчанию - особенно то, как формы отправляются в хэши параметров - похоже, работают как модели без подклассов.Ссылки и хэши параметров - это всего лишь два способа, которыми значения по умолчанию вас кусают.
Каков "правильный" способ обработки сложной логики для различных типов пользователей в Rails?В Java работает модель подклассов - вам не нужно проходить через обручи, чтобы заставить ее работать так, как вы хотите.Но в Rails трудно заставить подклассы работать с соглашениями REST, он наказывает вас, когда вы забыли включить :as => :user
, или он наказывает вас, когда вы помещаете подклассный объект в ссылки, такие как edit_user_path(@user)
<- плохая идея!</p>
Есть еще одна область, с которой также очень трудно иметь дело.Допустим, у меня есть модель Company
, и у нее много Users
.Эти пользователи могут быть директорами, инструкторами, стажерами и т. Д. - все это разные подклассы.
Когда мы создаем учетную запись, мы можем захотеть использовать accepts_nested_attributes_for :users
.Однако, если мы используем это, мы не можем указать классы, которые он создает.Черт побери!
Кажется, что все в Rails разработано так, чтобы не хотеть, чтобы вы делили свои модели на подклассы.Если вы не подкласс, все «просто работает».Но если вы подкласс, вы попадете в ад.
Какое решение?