Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.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 无法:包含具有两个关系的模型_Ruby_Ruby On Rails 3_Activerecord - Fatal编程技术网

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

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

我试图用主机记录(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_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
是否有效?