将数组中的值存储在新数组中

时间:2018-12-18 09:21:05

标签: ruby-on-rails arrays ruby

我有一个数组prejobs,我想将其某些元素存储在新数组demojobs中。我尝试了以下代码:

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

但是出现undefined method 'stringify_keys'错误。有什么好的方法可以执行此操作吗?

2 个答案:

答案 0 :(得分:1)

假设PrejobDemojob都是活动记录模型,则应在构造函数调用中使用attributes。同样,宁愿使用map来构建一个新数组或附加一个新数组,而不是在每个迭代步骤中将新值分配给var。

@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

答案 1 :(得分:1)

我认为您应该尝试这样

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