我有一个数组prejobs
,我想将其某些元素存储在新数组demojobs
中。我尝试了以下代码:
@pre.jobs.map do |job|
@demojobs = Demojob.new(job)
end
render json: @demojobs
但是出现undefined method 'stringify_keys'
错误。有什么好的方法可以执行此操作吗?
答案 0 :(得分:1)
假设Prejob
和Demojob
都是活动记录模型,则应在构造函数调用中使用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