Вопрос об ассоциации и моделях на рельсах - PullRequest
0 голосов
/ 18 мая 2011

Я недавно работал над проектом, в котором Игрок может создать Команду и быть Владельцем Команды, но игрок также может быть частью Команды за отдельной таблицей с именем Squad.

class Player
has_many :teams
has_many :squads
end

class Squad
belongs_to :player
belongs_to :team
end

class Team
belongs_to :owner, :class_name => "Player"
has_many :squads
has_many :players, :through => "squads"
end

Я не знаю, все ли это, что мне нужно, чтобы делать то, что я хочу, но я просто не могу понять.Как я могу заставить игрока попросить пригласить его в команду через команду, и владелец команды отвечает «да» или «нет» этому игроку?Если да, он присоединяется к настольному отряду и является частью команды.Если нет, его запрос уничтожен.

Ответы [ 2 ]

1 голос
/ 18 мая 2011

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

Таким образом, игрок вызывает действие создания отряда, создает модель отряда. Команда # show показывает владельца запросов на присоединение команды от игроков и использует команду # accept или squad # reject (или #update with аргумент статуса), а затем вы меняете статус на true или уничтожаете эту запись команды.

И в основном это все

Обновлено

Так работает базовая система общения в социальных сетях.

С помощью state_machine вы можете определить другое состояние rejected, чтобы тот же пользователь не спамил владельцу команды запросы после отклонения. Проверяя поле updated_at, вы можете установить тайм-аут, после которого тот же человек может повторить свой запрос.

0 голосов
/ 18 мая 2011

Похоже, вам нужно узнать об отношениях has_and_belongs_to_many.Это то, что вы должны использовать, чтобы связать команды с игроками, отряды с игроками и отряды с командами.

Что касается приглашения, вам, вероятно, следует создать модель под названием Приглашение, которая связана с игроками / отрядами / командами всоответствующий путь.Уведомление о приглашениях может быть обработано в контроллерах / представлениях.

...