我想将一个虚拟属性添加到activerecord对象。定义getter / setter很简单,但我希望我的属性出现在属性hash(和attribute_names等)中。由于这是rails 4,我无法使用attr_accessible。
我还需要添加到此代码中,以便我可以调用reference.attributes并将作者的值显示在那里吗?
class Reference < ActiveRecord::Base
def authors
self.author_names.to_a.join(' and ')
end
def authors=(val)
self.author_names.destroy
val.strip.split(/(?:[ ]and[ ])|\;/).each {|entry|
self.author_names << AuthorName.new(name: entry)
}
end
end
答案 0 :(得分:5)
def attributes
super.merge({'authors' => authors})
end