2016-10-25 8 views
1

私の問題は最初は簡単だったようですが、まだ解決できませんでしたので、私のDBからいくつかのレコードを取得しました。それらの検索されたレコードの。私は 私のモデルに従うRuby on railsはアクティブなレコードから既存のオブジェクトに属性を追加します

class Lesson < ActiveRecord::Base 
    attr_reader :palindrome #getter 
    attr_writer :palindrome #setter 
    attr_accessor :palindrome #both 

    belongs_to :schedule 
    belongs_to :user 
    has_one  :schedule 


end 

と私のコントローライムで

def index 
    @lessons = Lesson.select(:id,:start_date,:users_allowed,:name,:users_enrolled).where(start_date: (Time.now.beginning_of_week.beginning_of_day)..Time.now.end_of_week.end_of_day).order(start_date: :desc) 
    @schedules = Array(Schedule.where(user_id: 50).pluck(:lesson_id)) 

    day_id = params[:id].to_i 
    @day_1 = [] 
    @day_2 = [] 
    @day_3 = [] 
    @day_4 = [] 
    @day_5 = [] 
    @day_6 = [] 
    if day_id.present? 
     @lessons.each do |lesson| 
     lesson.palindrome = 'TEST' 
     case lesson.start_date.wday 
      when 1 
      @day_1 << lesson 
      when 2 
      @day_2 << lesson 
      when 3 
      @day_3 << lesson 
      when 4 
      @day_4 << lesson 
      when 5 
      @day_5 << lesson 
      when 6 
      @day_6 << lesson 
     end 
     end 
     case day_id 
     when 1 
     @lessons = @day_1 
     when 2 
     @lessons = @day_2 
     when 3 
     @lessons = @day_3 
     when 4 
     @lessons = @day_4 
     when 5 
     @lessons = @day_5 
     when 6 
     @lessons = @day_6 
     end 
     render json: @lessons 
    end 
    end 

それを追加するためにこれを行うしかしイムあなたが見ることができるように

[ 
    { 
    "id": 7019, 
    "start_date": "2016-10-24T20:30:00.000Z", 
    "users_allowed": 4, 
    "name": "Power - Funcional", 
    "users_enrolled": 2 
    }, 
    { 
    "id": 7018, 
    "start_date": "2016-10-24T20:00:00.000Z", 
    "users_allowed": 4, 
    "name": "Power - Funcional", 
    "users_enrolled": 0 
    }] 

この応答を取得を返すされていないとして試してみてください私が割り当てた新しい属性は、しかし、私は呼び出してみた

render json: @lessons[0].palindrome 

それは私に属性の値を返します、私の質問はどうすれば私はそれが新しいattrの値を返すオブジェクト全体をレンダリングすることができますか? 多くのありがとう

答えて

1

ハッシュではなくActiveRecordオブジェクトの配列を渡しています。 jsonコンバーターは、それらのオブジェクトに割り当てられたカスタム変数ではなく、モデルの属性を解析します。ハッシュにモデルを変換してみてください。

lesson = lesson.attributes 
lesson['palindrome'] = 'TEST' 

はまた、あなたのコードをリファクタリングを検討し、私はあなたがそれらのcase文でも理解することが難しい作る@dayx変数が必要とは思いません。

+0

おかげさまで助けてくれてありがとう、私は新しいレンダリングメソッドを使いました。私はとにかくコードをリファクタリングしています。 – mdiaz00147

関連する問題