1

我正在尝试使用主机记录(id、主机名、netid)和具有路由连接的表建模一个表,该表表示两个路由(id、src_id、src_ip、dst_id、dst_ip)之间的连接。

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

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
4

1 回答 1

1

使用自定义 sql,因为包含不返回关联模型。Route.find_by_sql('select hosts.* ...') 或者您可以使用包含和 select('hosts.*') 的连接。例子:

User.joins(:posts).select('posts.title')
于 2013-05-15T19:52:14.400 回答