【问题标题】:ruby extend system class ActiveRecord::Relationruby 扩展系统类 ActiveRecord::Relation
【发布时间】:2015-02-06 11:06:56
【问题描述】:

我想向 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 轨道 4.0

【问题讨论】:

    标签: ruby-on-rails ruby activerecord


    【解决方案1】:

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

    【讨论】:

    • 抱歉,复制粘贴错误。试过了,结果还是一样。文件的位置重要吗?试过 /app/models/fond_one.rb 和 /app/models/concerns/find_one.rb
    • 尝试将其放入config/initializers 的文件中。然后重启服务器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-25
    相关资源
    最近更新 更多