非DB模型的column_names

时间:2014-01-30 00:45:24

标签: ruby-on-rails ruby activerecord

非DB模型的ActiveRecord column_names方法的等价物。

class Person
  include ActiveModel::Model
  attr_accessor :first_name, :last_name
end

方法应该返回类似这样的内容[“first_name”,“last_name”]

1 个答案:

答案 0 :(得分:2)

attr_accessor是定义getter和setter的简写,所以我能想到的最接近这个类的column_names方法而不构建任何额外的脚手架是这样的:

Person.instance_methods(false).reject { |m| m =~ /.*=/ }

您拨打instance_methods以获取getter和setter,然后拒绝设置者。将false传递给instance_methods会排除超类上定义的方法(在本例中为Object)。