Есть и принадлежит многим подходящим - PullRequest
0 голосов
/ 08 июня 2011

Я новичок в этом сайте, с нетерпением жду возможности принять более активное участие:)

Я создаю систему заказов клиентов, используя rails3, devise, cancan и т. Д.

Короче говоря, мы тримодели:

  1. Пользователи
  2. Компании
  3. Заказы

Хотя я изо всех сил пытаюсь понять отношения.Изначально у пользователей было много компаний, и компании принадлежали пользователю.

Однако у нас фактически есть два вида пользователей:

  1. Административный персонал, который может создавать компании, обновлять деталии т. д.
  2. Наши клиенты, которые могут войти и увидеть только свои компании и связанные с ними заказы.

Я думал о создании двух контроллеров - администратора и пользователей, но это кажется ненужным и не очень рельсовым.Плюс канкан может делать все, что я думаю.

Как вы думаете, что нам следует здесь делать?Мы думали об использовании отношения has_and_belongs_to_many, но большинство людей в Интернете, кажется, говорят, что избегать этого.

Спасибо,

Дженни

--- edit ---

Спасибо всем, кто помог!

После некоторого прочтения я решил использовать ассоциацию «есть много».

Я создал новую модель под названием соглашение и настроил свои модели следующим образом:

class User < ActiveRecord::Base
  has_many :agreements
  has_many :companies, :through => :agreements
end


class Company < ActiveRecord::Base
  has_many :agreements
  has_many :users, :through => :agreements
end

Я немного застрялхотя и не могу найти хороший пример в Интернете.

Должен ли я создавать пользователя и компанию отдельно, а затем создавать соглашение, чтобы соответствовать двум?

Опять же, спасибо за помощь Всем.

Ответы [ 3 ]

1 голос
/ 08 июня 2011

Учитывая описание, это звучит как у вас:

  1. Пользователи
  2. Клиенты
  3. Компания
  4. Заказы

Администраторы - это пользователи, у которых есть роль, предоставляющая им доступ к созданию и обновлению компаний. Клиент принадлежит компании и также может быть «пользователем» в зависимости от информации, которую вы храните в модели User.

Что касается HABTM, то все еще можно использовать, если вы не помещаете дополнительные данные в таблицу соединений. Как правило, хотя у вас есть некоторая информация в таблице соединений, поскольку она обеспечивает дополнительный контекст для объединения.

Хорошим ресурсом для образцов моделей данных и для представления некоторых идей об объектах и ​​отношениях является Библиотека бесплатных моделей данных

0 голосов
/ 08 июня 2011

Во-первых, вам нужно знать, чего вы действительно хотите достичь, понять отношения и как эти отношения должны выглядеть. Нарисуйте какую-нибудь модель отношений сущностей на бумаге, это поможет.

Лично я предпочитаю пользователя has_many: through, потому что, если вам нужно хранить дополнительные данные для этого отношения (что может иметь место при расширении вашего приложения), вы уже настроены и вам не нужно переносить таблицы и модели от habtm до has_many: через.

Для пользовательских разрешений придерживайтесь cancan.

0 голосов
/ 08 июня 2011

Вы можете перейти с has_many: через. Как кажется, приложение наверняка будет нуждаться в постоянных изменениях в ближайшем будущем. Так что в этом случае будет полезно Ответить, если есть какие-либо запросы

Спасибо

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