2013-06-03 2 views
0

Я разрабатываю простые рельсы приложение и у меня есть специальный метод, который возвращает последние созданных детали колонкиRails ActiveRecord возвращается неправильные результатами

def getid 
    @b_id = params[:bid] 
    @log_id = Log.where("bid = ?",@b_id).last.to_json 
    respond_to do |format| 
     format.html{render :text => @log_id} 
     format.json{render :json => @log_id} 
    end 
end 

Столбец запускает следующий запрос в бэкэнде

Log Load (0.2ms) SELECT `logs`.* FROM `logs` WHERE (bid = 'B01') ORDER BY `logs`.`logid` DESC LIMIT 1 

соответствующие значения столбцов ID: 3, LOGID: 20002

JSON возвращенное {u'id ': u'20002, u'logid': u'20002' }

Мои вопросы:

  1. Почему рельсы добавив u к каждому элементу JSON?
  2. Почему id возвращен как 20002 вместо 3? (Идентификатор автоматическое приращение и является уникальным ключом, LOGID является первичным ключом)

EDIT:

я узнал, что характер u добавляется на стороне питона, так как они Юникода строки и получил избавиться от него, как показано здесь

+0

Я использую запросы python для получения json – hld619

ответ

0

Вам не нужно называть to_json на объекте в этой строке

@log_id = Log.where("bid = ?",@b_id).last.to_json 

Только оригинальный объект в порядке.

@log_id = Log.where("bid = ?",@b_id).last 

Потому что, когда вы звоните render json: @obj будет действие для преобразования OBJ в JSON. Не нужно дублирование.

+0

Я избавился от метода to_json, но я все еще получаю идентификатор как 20002 вместо 3 (id - это рельсы, сгенерированные внутренним столбцом id) – hld619

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