Rails undefined方法`sections'用于关联

时间:2014-01-22 01:10:57

标签: ruby-on-rails ruby-on-rails-4

一个页面has_many部分,以便一个部分属于页面。因此,如果我想要检索页面的所有“部分”,我应该像“Page.sections”那样编写它,但是我有一个错误。

2.0.0-p353 :042 > pages = Page.where(id: 48)
Page Load (0.4ms) SELECT `pages`.* FROM `pages` WHERE `pages`.`id` = 48
=> #<ActiveRecord::Relation [#<Page id: 48, name: "---\n- français\n", parent_id: 36, created_at: "2014-01-22 00:33:48", updated_at: "2014-01-22 00:33:48">]>
2.0.0-p353 :043 > section = Section.where(page_id: 48).count
(0.3ms) SELECT COUNT(*) FROM `sections` WHERE `sections`.`page_id` = 48
=> 3
2.0.0-p353 :044 > pages.sections
NoMethodError: undefined method `sections' for #<ActiveRecord::Relation::ActiveRecord_Relation_Page:0x00000004f53c60>
...
from bin/rails:4:in `require'
from bin/rails:4:in `<main>'

1 个答案:

答案 0 :(得分:0)

您目前拥有一系列网页。当你使用

Page.where(id: 48)

您正在获取一个返回给您的数组。你想要做的是

Page.find 48

这将只返回一个元素。在这种情况下,您应该能够毫无问题地使用sections方法。

如果出于某种原因,您想使用.where,则可以使用

之类的内容
pages.first.sections

检索列表中FIRST元素的各个部分(当whereid一起使用时,您应该只获得数组中的单个元素)