Ruby on rails 从Ruby中的模型获取可用列名数组

Ruby on rails 从Ruby中的模型获取可用列名数组,ruby-on-rails,ruby,arrays,Ruby On Rails,Ruby,Arrays,我想知道是否有办法获取所有可用的列名并将它们作为符号放入数组中 假设该表如下所示(取自schema.rb): 现在,我在相应的模型中有一个方法,我在其中定义: def self.attributes [ :inst_number, :name, :street, :postcode, :city ].freeze end 是否有办法将它们列在数组中,这样我就不必每次迁移时都手动更新self.attributes?假设表

我想知道是否有办法获取所有可用的列名并将它们作为符号放入数组中

假设该表如下所示(取自schema.rb):

现在,我在相应的模型中有一个方法,我在其中定义:

def self.attributes
    [
      :inst_number,
      :name,
      :street,
      :postcode,
      :city
    ].freeze
end

是否有办法将它们列在数组中,这样我就不必每次迁移时都手动更新self.attributes?

假设表名为“users”,模型名为
User

您可以使用

User.column_names # This gives array of strings of column names
把它当作符号

User.column_names.map(&:to_sym)

假设表名为“users”&模型名为
User

您可以使用

User.column_names # This gives array of strings of column names
把它当作符号

User.column_names.map(&:to_sym)

我认为更好的解决方案可能是创业板。它正是您想要做的,您只需安装它:

#gemfile
gem "annotate", "~> 2.6.0"

然后运行
annotate


它会自动更新每个
'model'.rb文件中的模型属性。如果您进行了更改,只需再次运行annotate,或者更好地设置一个rake任务,以便在每次迁移时运行它

我认为更好的解决方案可能是创业板。它正是您想要做的,您只需安装它:

#gemfile
gem "annotate", "~> 2.6.0"

然后运行
annotate

它会自动更新每个
'model'.rb文件中的模型属性。如果您进行了更改,只需再次运行annotate,或者更好地设置一个rake任务,以便在每次迁移时运行它