Rails 循环遍历模型中的记录

Pee*_*ush 1 ruby ruby-on-rails ruby-on-rails-4

我在 PostgeSQL 数据库中定义了 2 个 hstore 列 (parameters和)。keys我想获取键列表并在模型中为其定义了一个方法:

def self.keys_list
  logs = self
  list = Log.column_names - %w{id parameters extras}
  logs.each do |log|
    log.parameters.present? ? list << log.parameters.keys : list << []
    log.extras.present? ? list << log.extras.keys : list << []
  end
  list = list.flatten.uniq
  return list
end
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用它时,出现以下错误:

NoMethodError: undefined method `each' for #<Class:0x00000004b630b0>
Run Code Online (Sandbox Code Playgroud)

任何人都可以建议错误在哪里或者如何以其他方式做到这一点?

Mat*_*len 5

ActiveRecord::Base没有定义.each方法。您需要添加对 的调用all,如下所示:

all.each do |log|
  #...
end
Run Code Online (Sandbox Code Playgroud)

这应该使两者Log.keys_listLog.where(name: "Peeyush").keys_list起作用。