我想添加一个虚拟属性到一个activerecord对象。定义getter/setter很简单,但我希望我的属性出现在属性散列中(以及attribute_names等)。因为这是rails 4,所以我不能使用attr_accessible.
我还需要在这段代码中添加什么才能调用reference。属性,并在那里显示作者的值?
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
def attributes
super.merge({'authors' => authors})
end