2016-10-25 2 views
1

내 문제는 처음에는 쉬운 것 같았지만 아직 해결할 수 없었습니다. 그래서 내 DB에서 일부 레코드를 얻었고 각각에 속성을 추가해야합니다. 검색된 레코드 중 난 당신이 반환하지 않습니다 볼 수는이 응답Ruby on rails가 활성 레코드의 기존 객체에 속성을 추가합니다.

[ 
    { 
    "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 
    }] 

를 받고 그것을

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 

하지만 메신저를 추가하고 내 모델

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 

내 컨트롤러 메신저에를 을 따를 시도 내가 할당 한 새로운 속성, 그러나 나는 전화를 시도했다

render json: @lessons[0].palindrome 

그리고 나에게 속성의 값을 반환, 내 질문은 어떻게 그렇게 할 수있는 새로운 attr 값을 반환 전체 개체를 렌더링합니까? 많은 감사합니다.

답변

1

해시가 아니라 ActiveRecord 개체의 배열을 전달하고 있습니다. json 변환기는 해당 개체에 할당 된 사용자 지정 변수 대신 모델의 특성을 구문 분석합니다. 해시로 모델을 변환보십시오 :

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

은 또한 코드를 리팩토링을 고려, 나는 당신이 그 case 문이나 힘든 이해 만드는 @dayx 변수를 필요가 있다고 생각하지 않습니다.

+0

안녕하세요, 도움을 주신 데 감사드립니다. im은 새로운 방법으로 렌더링했습니다. 어쨌든 코드를 리팩토링합니다. – mdiaz00147

관련 문제