Возврат метода модели в хэш JSON с помощью: include - PullRequest
1 голос
/ 19 января 2012

У меня есть запрос на активную запись, который довольно прост

def show
  user = User.find(params[:id])
  render :text => user.to_json(:include=>:classes)
end

Однако в моей Class модели у меня есть метод

def self.get_avg_prev_score(id)
  return Scores.calc_score(id)
end

Я пытаюсь вернуть avg_prev_score в мой хэш JSON, но, поскольку он не является столбцом в базе данных, я не уверен, как это сделать.

1 Ответ

1 голос
/ 19 января 2012

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

def show
  @user = User.find(params[:id])
  render :text => JSON::parse(@user.to_json(:include=>:classes)).merge("avg_prev_scores" => @user.get_avg_prev_scores_for_classes).to_json
end

и затем ваш другой метод возвращает хэш всех коррелированных балловк class_id:

# User.rb model
def get_avg_prev_scores_for_classes
  average_scores = []
  self.classes.each {|c| average_scores << [c.id, Scores.calc_score(c.id)]}
  return Hash[*average_scores.flatten]
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...