分享 分享一段小代码,用于生成 is_xxx?的情况

chucai · 2013年01月10日 · 最后由 chucai 回复于 2013年01月10日 · 2388 次阅读

代码没有什么出奇的地方 应对的场景 model A 中的 column a 只能包含 ['X', 'Y','Z'] 的一个值,经常需要这样的方法

if @a.is_x? || @a.is_y?

代码

def self.generator_is_methods(attr, method_names)
  method_names.each do |name|
    define_method("is_#{name.downcase}?") do
      self.send(attr.to_sym) == name
    end
  end
end

可以调用

generator_is_methods :a, ['X','Y','C']

有心人,可以将其作为一个 ActiveRecord 的扩展,有点类似于 acts_as_xxx 方法

应该把 is_ 去掉,比如 success? right?

#1 楼 @huacnlee 谢谢华顺,对,去掉最好了。 我加 is 主要是现在的系统的一些遗留问题。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号