非DB模型的ActiveRecord column_names方法的等价物。
class Person
include ActiveModel::Model
attr_accessor :first_name, :last_name
end
方法应该返回类似这样的内容[“first_name”,“last_name”]
答案 0 :(得分:2)
attr_accessor
是定义getter和setter的简写,所以我能想到的最接近这个类的column_names
方法而不构建任何额外的脚手架是这样的:
Person.instance_methods(false).reject { |m| m =~ /.*=/ }
您拨打instance_methods
以获取getter和setter,然后拒绝设置者。将false传递给instance_methods
会排除超类上定义的方法(在本例中为Object
)。