Не в состоянии правильно построить отношения рельсовым путем или полиморфные отношения кораблей? - PullRequest
0 голосов
/ 06 февраля 2019

Я использую рельсы 5 и Ruby 2.3
У меня есть имя модели. Пользователь, созданный с помощью устройства, которое может создавать задания, поэтому для этого используется миграция:

rails g model job user:references cader_id:integer

Эти задания можно выполнитьдругим пользователем с ролью Cader.Когда Cader выполнил задание, в нем я сохраню user_id этого пользователя в таблице заданий как cader_id, который является целым числом

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

Я могу выполнить поиск всех заданий, созданных этим пользователем, например

user.jobs

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

job.user

Как я могу выполнить поиск всех заданий, выполненных пользователем как пользователь, как Cader, например

cader.completed_jobs or user.completed_job 

, и выполнить поиск конкретного Caderкоторый выполнил задание наподобие

job.cader

Заранее благодарен

за поиск в Cader, выполнившем задание по заданию. Я написал метод класса наподобие

 def cader?
    cader = User.find(self.cader_id)
 end     

1 Ответ

0 голосов
/ 06 февраля 2019

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

def completed_jobs
  Job.where(cader_id: id)
end

И для поиска конкретного cader измените свой метод класса назадание instance method, когда вы запрашиваете конкретный экземпляр задания.

Добавьте индекс в cader_id для улучшения результатов поиска

...