Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.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
Rails association finder_sql proc{}不会返回所有表列_Sql_Ruby On Rails_Associations - Fatal编程技术网

Rails association finder_sql proc{}不会返回所有表列

Rails association finder_sql proc{}不会返回所有表列,sql,ruby-on-rails,associations,Sql,Ruby On Rails,Associations,我的页面模型中有此关联 它通过NetworkPages模型中的页面ID检索网络。其表格如下: 1.9.3p392 :010 > Network => Network(id: integer, name: string, created_at: datetime, updated_at: datetime, column1: string, column2: string, inversion: boolean) 1.9.3p392 :011 > NetworkPage =

我的页面模型中有此关联

它通过NetworkPages模型中的页面ID检索网络。其表格如下:

1.9.3p392 :010 > Network
 => Network(id: integer, name: string, created_at: datetime, updated_at: datetime, column1: string, column2: string, inversion: boolean) 
1.9.3p392 :011 > NetworkPage
 => NetworkPage(id: integer, network_id: integer, page1_id: integer, page2_id: integer, created_at: datetime, updated_at: datetime) 
但是,当调用上面的关联时,我只得到记录的id和timestamp列作为返回:

1.9.3p392 :014 > page.networks
 => [#<Network id: 1, created_at: "2013-04-07 09:07:05", updated_at: "2013-04-07 09:07:05">] 

我不太明白为什么会发生这种情况,如何检索所有网络模型属性?

您的finder\u sql从错误的表中选择了网络页面而不是网络

啊,是的,我想知道为什么它返回了网络类。rails是否正在尝试将返回的列与模型匹配?has_many:networks,:finder_sql=>proc{SELECT networks.*从网络内部连接网络上的网络页面。id=network\u pages.network\u id其中page1_id={id}或page2_id={id}它返回了一个网络,因为您说有很多网络。它不会尝试分析finder_sql的内容以查看正在使用哪些表
1.9.3p392 :014 > page.networks
 => [#<Network id: 1, created_at: "2013-04-07 09:07:05", updated_at: "2013-04-07 09:07:05">] 
1.9.3p392 :015 > page.networks.first.class
 => Network(id: integer, name: string, created_at: datetime, updated_at: datetime, column1: string, column2: string, inversion: boolean) 
1.9.3p392 :016 > page.networks.first.name
ActiveModel::MissingAttributeError: missing attribute: name
    from (irb):16
    from /Users/RyanKing/.rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.12/lib/rails/commands/console.rb:47:in `start'
    from /Users/RyanKing/.rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.12/lib/rails/commands/console.rb:8:in `start'
    from /Users/RyanKing/.rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.12/lib/rails/commands.rb:41:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'
1.9.3p392 :017 > Network.find(1).name
  Network Load (0.5ms)  SELECT `networks`.* FROM `networks` WHERE `networks`.`id` = 1 LIMIT 1
 => "First Network Name"