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

chucai · January 10, 2013 · Last by chucai replied at January 10, 2013 · 2464 hits

代码没有什么出奇的地方 应对的场景 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 主要是现在的系统的一些遗留问题。

You need to Sign in before reply, if you don't have an account, please Sign up first.