Ruby on rails Rails在模型中循环记录

Ruby on rails Rails在模型中循环记录,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我在PostgeSQL数据库中定义了两个hstore列(参数和键)。我想获得一个键列表,并在模型中为其定义了一个方法: 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 << []

我在PostgeSQL数据库中定义了两个hstore列(
参数
)。我想获得一个键列表,并在模型中为其定义了一个方法:

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
def self.keys\u列表
日志=自我
list=Log.column_name-%w{id parameters extras}
日志。每个do |日志|

log.parameters.present?list
ActiveRecord::Base
没有定义一个
。每个
方法。您需要添加对
all
的调用,如下所示:

all.each do |log|
  #...
end

这应该使
Log.keys\u list
Log.where(name:“Peeyush”).keys\u list
都能工作。

ActiveRecord::Base
不定义
。每个
方法。您需要添加对
all
的调用,如下所示:

all.each do |log|
  #...
end

这将使
Log.keys\u list
Log.where(name:“Peeyush”).keys\u list
工作。

logs=self;日志。每个。。。在本例中,self将是您所在的类,因此日志已设置为一个类,也许您想将其设置为其他类型?假设我有一些日志<代码>日志=日志。其中(名称:“Peeyush”)
。现在,我想得到它的钥匙清单。所以,我想在它上面打一个类似于logs.keys_list的调用。logs.map{a{a}a.keys_list}。展平我想可以做到。。当然,这要求Log为每个单独的日志定义一个keys_list函数,
logs=self
位非常混乱。只要使用
self
。我想你想要Matijs的答案所建议的。不过,我想提出一个离题的建议。。您可以编写
log.parameters.present?列表日志=self;日志。每个。。。在本例中,self将是您所在的类,因此日志已设置为一个类,也许您想将其设置为其他类型?假设我有一些日志<代码>日志=日志。其中(名称:“Peeyush”)
。现在,我想得到它的钥匙清单。所以,我想在它上面打一个类似于logs.keys_list的调用。logs.map{a{a}a.keys_list}。展平我想可以做到。。当然,这要求Log为每个单独的日志定义一个keys_list函数,
logs=self
位非常混乱。只要使用
self
。我想你想要Matijs的答案所建议的。不过,我想提出一个离题的建议。。您可以编写
log.parameters.present?列表