Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 优雅:如何更好地展平活动记录查询_Ruby On Rails_Ruby On Rails 4_Activerecord - Fatal编程技术网

Ruby on rails 优雅:如何更好地展平活动记录查询

Ruby on rails 优雅:如何更好地展平活动记录查询,ruby-on-rails,ruby-on-rails-4,activerecord,Ruby On Rails,Ruby On Rails 4,Activerecord,我试图通过一个连接得到一个简单的结果散列。我得到了正确的输出,但我讨厌我的实现 以下是我目前的尝试: class Position < ActiveRecord::Base has_many :position_synonyms end class PositionSynonym < ActiveRecord::Base belongs_to :position end 我想你可以试试: def flat Position.select(:id, :name).map

我试图通过一个连接得到一个简单的结果散列。我得到了正确的输出,但我讨厌我的实现

以下是我目前的尝试:

class Position < ActiveRecord::Base
  has_many :position_synonyms
end

class PositionSynonym < ActiveRecord::Base
  belongs_to :position
end
我想你可以试试:

def flat
  Position.select(:id, :name).map{|p| {id: p.id, name: p.attributes}} +
  PositionSynonyms.select(:position_id, :name).map{|s| {id: s.position_id, name: s.name}}
end
或者可能表现更好的:

def flat
  Position.pluck(:id, :name).map{|p| {id: p[0], name: p[1]} } +
  PositionSynonyms.pluck(:position_id, :name).map{|s| {id: s[0], name: s[1]} }
end
def flat
  Position.pluck(:id, :name).map{|p| {id: p[0], name: p[1]} } +
  PositionSynonyms.pluck(:position_id, :name).map{|s| {id: s[0], name: s[1]} }
end