Ruby 无法:包含具有两个关系的模型
我试图用主机记录(id、主机名、netid)和路由连接(表示两条路由(id、src_id、src_ip、dst_id、dst_ip)建立一个表的模型 当我尝试检索主机的所有路由记录并:包括主机表(以便获取主机名)时,它只检索路由记录。我做错了什么Ruby 无法:包含具有两个关系的模型,ruby,ruby-on-rails-3,activerecord,Ruby,Ruby On Rails 3,Activerecord,我试图用主机记录(id、主机名、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_n
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
类主机'Host',:foreign\u key=>'src\u id'
属于:dstwost,:class\u name=>“Host”,:foreign\u key=>“dst\u id”
结束
x=路由。其中(:src_id=>host)。包括(:srchost,:dsthost)
把x
使用自定义sql,因为包含不返回关联模型。Route.find_by_sql('select hosts.*…'),或者可以使用连接代替includes和select('hosts.*')。例如:
User.joins(:posts).select('posts.title')
您可能希望尝试以下操作:
Route.includes(:host)。其中(:src_id=>host)
谢谢,但是没有名为host的关联。我收到错误“找不到名为“主机”的关联”仅将:host
替换为:srchost,:dsthost
是否有效?