我正在使用rail4和ruby 2.0,我想在 ActiveModel :: Errors 中添加一个方法" first_error" 申请,所以我遇到了两种可能性:
我已成功实施第一种方法,只需创建初始化程序" custom_model_error.rb"
class ActiveModel::Errors
def first_error
if !self.first
return nil
end
data = Hash.new
data['error_code'] = '900'
data['message'] = self.first.join(' ')
return data
end
end
但是当我尝试通过在lib目录中定义模块来实现第二种方法时:
module RefineErrors
refine ActiveModel::Errors do
def first_error
if !self.first
return nil
end
data = Hash.new
data['error_code'] = '900'
data['message'] = self.first.join(' ')
return data
end
end
end
然后在ApplicationController中使用此模块:
class ApplicationController < ActionController::API
using RefineErrors
我收到错误未定义的方法&#39;使用&#39; 。
现在我的问题是:
这是目前实施的最佳方法?
通常不建议使用Monkey Patching,并且改进是ruby 2.0的实验性功能
还想知道如何使用rails4 中的优化实现这一点?
如果在这种情况下应该遵循任何其他方法,请同时提及。
答案 0 :(得分:0)
如果您使用的是ruby 2.0,则需要使用支持细化的红宝石补丁。请在此处查看http://timelessrepo.com/refinements-in-ruby
这个链接也分享了猴子补丁和改进的力量。