в рельсах, как я могу рассчитать количество записей дочерней таблицы (модели) внутри родительского интерфейса - PullRequest
0 голосов
/ 22 сентября 2019

У меня есть 2 модели Project и Task, в которых Project имеет много задач. Я хочу обновить «прогресс» в интерфейсе проекта с помощью количества выполненных задач.

Какой лучший способ сделать это, я должен создать 'поле прогресса »в таблице проекта или лучше сделать это другим способом

Я пытался сделать это

//Project model
def completed_tasks(project)
   self.tasks.where({completed: true}).count
end
 //Project controller 
def isDone
  @isDone_tasks = Project.completed_tasks(:id)

end

1 Ответ

0 голосов
/ 22 сентября 2019

Вот как я бы это сделал:

  1. Я бы добавил добавить поле с именем completed с логическим типом в таблицу задач и по умолчанию false
  2. Если задача выполнена, поле обновляется до true
  3. . Я бы изменил ваш метод completed_tasks:
// Project model
def completed_tasks
  tasks.where(completed: true).count
end

Обратите внимание, что я удалил self.Вам не обязательно явно вызывать это, поскольку вы уже находитесь внутри модели.

Я бы изменил ваш isDone метод, вы не используете camelCase для именования в Ruby, соглашение заключается в использовании snake_case.
 // Project controller 
def number_of_tasks_done
  project = Project.find(params[:id])
  render json: project.completed_tasks, status: 200
end

Я предполагаю, что вы отправляетеid проекта из внешнего интерфейса, и это то, к чему я обращаюсь в параметрах как params [: id], и я также предполагаю, что вы хотите отправить ответ обратно во внешний интерфейс как JSON для обработки /дисплей.

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