ruby – 循环遍历ActiveRecord :: Associations :: CollectionProxy

前端之家收集整理的这篇文章主要介绍了ruby – 循环遍历ActiveRecord :: Associations :: CollectionProxy前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下模型设置活动记录4(映射遗留数据库)
class Page < ActiveRecord::Base
    self.table_name = "page"
    self.primary_key = "page_id"
    has_many :content,foreign_key: 'content_page_id',class_name: 'PageContent'
end

class PageContent < ActiveRecord::Base
    self.table_name = "page_content"
    self.primary_key = "content_id"
    belongs_to :pages,foreign_key: 'page_id',class_name: 'Page'
end

以下工作正常….

page = Page.first
page.content.first.content_id
=> 17
page.content.second.content_id
=> 18

但是我想能够循环所有的项目,如此

page.content.each do |item|
    item.content_id
end

但它只返回整个集合而不是单个字段

=> [#<PageContent content_id: 17,content_text: 'hello',content_order: 1>,#<PageContent content_id: 18,content_text: 'world',content_order: 2>]

看来它是一个ActiveRecord :: Associations :: CollectionProxy

page.content.class
=> ActiveRecord::Associations::CollectionProxy::ActiveRecord_Associations_CollectionProxy_PageContent

有人有任何想法吗?

干杯

解决方法

您可能想要使用地图:
page.content.map do |item|
  item.content_id
end

map(aka collect)将遍历一个数组,并逐个运行你要求它在数组成员上的任何代码.它将返回一个包含这些方法调用的返回值的新数组.

原文链接:https://www.f2er.com/ruby/267559.html

猜你在找的Ruby相关文章