Сохранять значения из массива в новом массиве - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть массив prejobs, и я хочу сохранить некоторые его элементы в новом массиве demojobs.Я попробовал следующий код:

@pre.jobs.map do |job|
    @demojobs = Demojob.new(job)
end
render json: @demojobs

Но я получаю ошибку undefined method 'stringify_keys'.Есть ли хороший способ сделать это?

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Я думаю, тебе стоит попробовать вот так

@demojobsarray = Array.new
    @pre.jobs.map do |job|
        @demojobsarray.push(job)
    end
@demojobs=Demojob.new(@demojobsarray)
render json: @demojobs
0 голосов
/ 18 декабря 2018

Предполагая, что и Prejob, и Demojob являются активными моделями записей, вы должны использовать attributes в вызове конструктора.Также лучше создать новый массив с map или добавить его, чем назначать новое значение переменной на каждом шаге итерации.

@demojobs = @pre.jobs.map do |job|
  Demojob.new(job.attributes.except(:id))
end
render json: @demojobs

РЕДАКТИРОВАТЬ:

Чтобы добавить несколько пользовательскихатрибуты, вы можете объединить их в хэш или установить их вручную:

@demojobs = @pre.jobs.map do |job|
  Demojob.new(job.attributes.except(:id).merge(attr1: val1, attr1: val2))
end
render json: @demojobs

@demojobs = @pre.jobs.map do |job|
  Demojob.new(job.attributes.except(:id)).tap do |dj|
    dj.attr1 = val1
    dj.attr2 = val2
  end
end
render json: @demojobs
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...