如何在Rails 4中为属性哈希添加虚拟属性

时间:2015-10-23 02:04:13

标签: ruby-on-rails ruby activerecord attr-accessible

我想将一个虚拟属性添加到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

1 个答案:

答案 0 :(得分:5)

def attributes
  super.merge({'authors' => authors})
end