【发布时间】:2011-12-13 02:12:09
【问题描述】:
我正在使用虚拟属性在视图中拆分逗号分隔的参数列表,然后尝试重新组合它们以保存到我的 Active Record 模型中。
给定默认为“1,1,1,1”的真实属性“ad_columns”
我将它们分解为表单的各个属性:
attr_accessor :top_rows
#Getter
def top_rows
split = ad_rows.split(',', 4)
split[0]
end
#Setter
def top_rows=(trows)
ad_rows_will_change!
self.ad_rows = [trows, self.right_rows, self.bottom_rows, self.left_rows].join(",")
end
然后对右、下、左和右重复此操作。
如果我调用“object.top_rows”给定一个对象,我会得到“1”,如果我在 irb 中更新它:
object.top_rows = "3"
然后它会正确更新 ad_rows 真实属性。我可以看到对象发生了变化,当我做一个
object.save
更改在数据库中更新。
问题是,这在视图中不起作用。它不会保存到数据库中。我什至使用 logger.info 来查看模型是否已更改,它会显示“ad_rows”确实已更改,但活动记录仍未更新真实属性。
我不知道为什么会这样。我只是做错了吗? :) 谢谢。
为什么它可以在 irb 中工作而不是在视图中?
【问题讨论】:
标签: ruby-on-rails activerecord