2016-07-30 3 views
0

Я пытаюсь выяснить, что является лучшим логическим способом моделирования отношений между моделями. У меня есть 4 модели:Модель отношений ActiveRecord с пользователями и организациями

  1. пользователя
  2. Продукт
  3. SlackTeam
  4. Организация

Здесь Пользователь имеет много Продукты, SlackTeams и организации, и SlackTeam принадлежит Пользователю и имеет одну организацию , Организация должна принадлежать пользователю и SlackTeam. Я логически исправлю здесь?

Технологический процесс заключается в следующем:

  • Пользователи могут войти в с
  • других пользователей из того же слабину команды будут добавлены в той же организации, как только они связать свою учетную запись с SlackTeam (которая автоматически создает организацию) отними
  • если пользователи подключаются ко многим SlackTeams (и организации) они могут фильтровать, чтобы увидеть продукты из всех организаций, частью которых они являются или только один

Я что-то упускаю?

ответ

0
class User 
    has_many :users_ogranizations 
    has_many :organizations, through: :users_organizations 
    has_many :products, through: :organizations 
end 

class Product 
    belongs_to :organization 
end 

class Organization 
    has_many :users_ogranizations 
    has_many :users, through: :users_organizations 
    has_many :products 
end 

class UsersOrganization 
    belongs_to :user 
    belongs_to :organization 
end 

# i'd rather use slack profile than team, because Organization and Team 
# already connotes the same thing. 
class SlackProfile 

end 

Вы можете обрабатывать логин своего пользователя, как вам нравится, тем не менее, я бы предпочел некую службу проверки подлинности. Все продукты, принадлежащие организации, теперь доступны пользователю, затем вы можете фильтровать продукты:

current_user.products.where(organization: Organization.last) 
+0

Спасибо за ответ. Я проверю это. Одна вещь, которая отличается от того, что вы предлагаете здесь, это то, что в текущем db есть записи, в которых Product принадлежит пользователю и пользователю has_many Products. Я думаю, как это изменение может заставить старые записи не работать. – OndrejK

+0

Чтобы уточнить, ваши пользователи могут создавать продукт? Потому что мое предположение заключалось в том, что Организация создает продукты. – oreoluwa

+0

О да. Пользователи фактически обмениваются контентом между ними как частью одной организации. – OndrejK

Смежные вопросы