无法:包含两个关系的模型

时间:2013-05-15 13:26:13

标签: ruby ruby-on-rails-3 activerecord

我正在尝试使用主机记录(id,hostname,netid)建模表,并使用路由连接表来表示两条路由之间的连接(id,src_id,src_ip,dst_id,dst_ip)。

当我尝试检索主机的所有路由记录时:包括主机表(以便我可以获取主机名),它只检索路由记录。我做错了什么?

class Host < ActiveRecord::Base
  has_many :routes
end

class Route < ActiveRecord::Base
  belongs_to :srchost, :class_name => 'Host', :foreign_key => 'src_id'
  belongs_to :dsthost, :class_name => 'Host', :foreign_key => 'dst_id'
end

x = Route.where(:src_id => host).includes(:srchost, :dsthost)
puts x.inspect

1 个答案:

答案 0 :(得分:1)

使用自定义sql因为包含不返回关联模型。 Route.find_by_sql('select hosts。* ...')或者你可以使用insins insted和select('hosts。*')。例如:

User.joins(:posts).select('posts.title')