2017-02-21 13 views
1

Я создал модель пользователя следующим образом:Преобразования значений столбцов строки и отображение в формате JSON

class User < ActiveRecord::Base 

    self.table_name = 'User' 

end 

таблица Пользователь имеет статус столбца и имеет значение 0 и 1

Я хочу, чтобы отобразить значение состояния в строки в json. когда состояние пользователя равно 0, тогда отображается неактивное и активное, когда его 1.

Как создать метод, который бы сделал это преобразование?

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

Благодаря

+0

'self.table_name = 'Пользователь' - это нарушает несколько соглашений сразу: D –

+0

Не могли бы вы рассказать мне, что я делаю неправильно? Я новичок в рубине на рельсах – User7354632781

+1

Конечно. Первое заключается в том, что по соглашению имя таблицы должно быть множественной формой имени модели, которую Rails автоматически распознает (вам нужно 'self.table_name', только если у вас есть имя таблицы, которое не соответствует указанному выше). Итак, чтобы следовать соглашениям, ваше имя таблицы должно называться 'users' (lowecased, множественное число), а затем вы можете удалить« self.table_name »вообще –

ответ

0

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

def status_str 
    case status 
    when 0 
    "active" 
    when 1 
    "archived" 
    end 
end 

Однако лучше всего было бы использовать ActiveRecord Enum:

enum status: [ :active, :archived ] 

Для выполнения этой работы ваш столбец status должен быть целым типом данных, а не логическим. Дополнительную информацию см. В разделе ActiveRecord Query Guide under Enums.

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

  • Нет связанных вопросов^_^