在Rails 3/4模型中,如果使用attr_accessor声明字段field1: attr_accessor :field1 如果在模型中存在field1,如何检查? column_exists?和method_defined?似乎只使用模型列,而field1不是模型列. attr_accessor定义
attr_accessor :field1
如果在模型中存在field1,如何检查? column_exists?和method_defined?似乎只使用模型列,而field1不是模型列.
attr_accessor定义了两个方法:def field1和def field1 =(val),所以你能做的最好的就是检查这两个函数是否存在.如果你有一个对象:
object.respond_to? :field1 object.respond_to? :field1=
如果不这样做,请使用:
Class.instance_methods.include? :field1 Class.instance_methods.include? :field1=