我正在用after_initialize
回调初始化我的模型的一些属性,但是当从数据库加载记录时会调用此回调,覆盖保存的值。这是模型:
class Post < ActiveRecord::Base
serialize :tags
after_initialize :init_tags
def init_tags
write_attribute :tags, []
end
end
在没有将回调更改为
的情况下,有没有办法做到这一点 def init_tags
if not read_attribute :tags
write_attribute :tags, []
end
end
答案 0 :(得分:0)
这样做:
class Post < ActiveRecord::Base
serialize :tags
after_initialize :init_tags
def init_tags
self.tags ||= []
end
end
这相当于你的第二个解决方案,只是缩短了一点。 save
方法未被调用,但它不应该是一个问题,因为这只会在模型的第一次初始化时使用,之后将填充该值。