代码没有什么出奇的地方 应对的场景 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 方法