ruby扩展系统类ActiveRecord :: Relation

时间:2015-02-06 11:06:56

标签: ruby-on-rails ruby activerecord

我想向ActiveRecord :: Relation添加一个方法,它返回一个奇异的结果,并在有0或> 1的结果时引发异常。 在SO about overriding find找到了我改编的东西,但是没有用,导致找不到方法

module FindOne
  def self.included(base)

    def find_exactly_one
      if self.size > 1
        raise "Expected exactly one, got #{self.size}"
      end
      first!
    end
  end
end

ActiveRecord::Relation.send :include, FindOne

有什么想法吗?

ruby​​ 2.1.5 rails 4.0

1 个答案:

答案 0 :(得分:0)

您的模块中有一个额外的end语句,这会导致语法错误。如果删除它,则应包括您的方法。