我开始在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
但是这也没有用,我的新属性没有设置
我错过了什么吗?
答案 0 :(得分:0)
这可能是你的任务搞砸了......
@depenses = @depenses.map {
^^^ ^^^
new old
您正在使用@depenses
返回的内容覆盖map
的旧值。这个新版本将只包含地图中使用的属性...您刚刚销毁旧值并将其替换为此值。
each
绝对是要走的路(根据其他答案)...你说你“试过each
” - 但是我们想看看你真正尝试过的代码是什么我们可以帮你调试它。
至于您的attr_accessor
...如果这是实际attribute
,则不需要它 - 您是否编写了迁移内容以将dettes
列添加到depenses
表?如果是这样 - 那么永远不要将attr_accessor
放入你的模型中 - 其中一个 - 它往往会像这样搞乱:)
如果删除该行 - 事情应该重新开始工作(或者至少揭开下一个错误):D