为什么map将每个属性都删除到我的对象

时间:2017-02-05 23:29:54

标签: ruby-on-rails ruby

我开始在rails上学习ruby并且我想为每个对象添加一个属性,所以我使用map来做到这一点,这就是我所拥有的:

我已将此添加到我的模型中:attr_accessor :dettes

@depenses = Depense.where(user_id: @user.id)
@depenses = @depenses.map {
    |d|
  d.dettes =  value
}

但这会删除对象的每个属性以仅设置新属性,我尝试使用each

@depenses.each do |d|
  d.dettes =  "value"
end

但是这也没有用,我的新属性没有设置

我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

这可能是你的任务搞砸了......

@depenses = @depenses.map {
^^^            ^^^
new          old

您正在使用@depenses返回的内容覆盖map的旧值。这个新版本将只包含地图中使用的属性...您刚刚销毁旧值并将其替换为此值。

each绝对是要走的路(根据其他答案)...你说你“试过each” - 但是我们想看看你真正尝试过的代码是什么我们可以帮你调试它。

至于您的attr_accessor ...如果这是实际attribute,则不需要它 - 您是否编写了迁移内容以将dettes列添加到depenses表?如果是这样 - 那么永远不要将attr_accessor放入你的模型中 - 其中一个 - 它往往会像这样搞乱:)

如果删除该行 - 事情应该重新开始工作(或者至少揭开下一个错误):D