Как убрать "id" из строки json в ruby ​​на рельсах? - PullRequest
0 голосов
/ 02 января 2019

Я получил данные без поля «id» из базы данных. Но когда я анализирую данные в строку json и показываю их на экране, я вижу поле «id» в строке json. Как удалить это поле "id"?

Вот мой код:

-report_logic.rb

def fetch_data ()
@datalist=WorkEarlyOverTime
@datalist = @datalist.joins("INNER JOIN `works` ON `work_early_over_times`.`work_id` = `works`.`id`")
  @datalist = @datalist.select('`work_early_over_times`.work_id AS 1次協力会社名','`work_early_over_times`.working_temp_person AS 職種名','`work_early_over_times`.working_temp_hour AS 作業場所','`work_early_over_times`.at_time_overtime_start AS 作業内容','`works`.`contents`')
@datalist = @datalist.where(work_id: $work_id)
return @datalist
end

- report_controller.rb

def work_late
report_logic = ReportLogic.new(params)
@work_late = report_logic.fetch_data()
render action: :work_late
end

- work_late.json.jbuilder

json.一覧 @work_late

Когда я показываю строку, я ожидал, что результат будет:

{"一覧":[
    {"1次協力会社名":1,
    "職種名":"0",
    "作業場所":"0.00 ",
    "作業内容":"2000-01-01T19:00:00.000+00:00",
    "contents":"作業内容1"}
    ]}

но фактический результат:

{"一覧":[
    {"id":null,
    "1次協力会社名":1,
    "職種名":"0",
    "作業場所":"0.00 ",
    "作業内容":"2000-01-01T19:00:00.000+00:00",
    "contents":"作業内容1"}
    ]}

Ответы [ 2 ]

0 голосов
/ 02 января 2019

Поскольку вы хотите получить JSON, вы можете попробовать .as_json, исключив поле id следующим образом:

@datalist.select('`work_early_over_times`.work_id AS 1次協力会社名','`work_early_over_times`.working_temp_person AS 職種名','`work_early_over_times`.working_temp_hour AS 作業場所','`work_early_over_times`.at_time_overtime_start AS 作業内容','`works`.`contents`').as_json(:except => :id)

Ваша подробная функция fetch_data будет выглядеть следующим образом:

def fetch_data ()
    @datalist=WorkEarlyOverTime
    @datalist = @datalist.joins("INNER JOIN `works` ON `work_early_over_times`.`work_id` = `works`.`id`")
      @datalist = @datalist.select('`work_early_over_times`.work_id AS 1次協力会社名','`work_early_over_times`.working_temp_person AS 職種名','`work_early_over_times`.working_temp_hour AS 作業場所','`work_early_over_times`.at_time_overtime_start AS 作業内容','`works`.`contents`').as_json(:except => :id)
    @datalist = @datalist.where(work_id: $work_id)
    return @datalist
end
0 голосов
/ 02 января 2019

Если id всегда null, просто проигнорируйте все nils:

json.ignore_nil!
json.一覧 @work_late

Если это не так, то вам нужно отфильтровать id перед сериализацией.Один из способов будет:

json.一覧 @work_late.serializable_hash.except("id")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...