一个页面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>'
答案 0 :(得分:0)
您目前拥有一系列网页。当你使用
Page.where(id: 48)
您正在获取一个返回给您的数组。你想要做的是
Page.find 48
这将只返回一个元素。在这种情况下,您应该能够毫无问题地使用sections
方法。
如果出于某种原因,您想使用.where
,则可以使用
pages.first.sections
检索列表中FIRST元素的各个部分(当where
与id
一起使用时,您应该只获得数组中的单个元素)