2016-10-25 2 views
1

моя проблема казалась простой, но я еще не смог ее решить, поэтому я получаю некоторые записи из своей БД, а затем мне нужно добавить атрибут для каждого из тех извлеченных записей. Я стараюсь, как следовать Моя модель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' 

Также рассмотреть рефакторинг кода, я не думаю, что вам нужны эти заявления, ни тематических @dayx переменных, которые делают его трудно понять.

+0

Привет, спасибо за помощь, им новый, используя метод визуализации, im рефакторинг кода в любом случае, многие из них – mdiaz00147

Смежные вопросы