无法遍历对象的属性

Cannot iterate through the attributes of an object

我想访问 DocumentUser 实例变量中的 document_id 值并将其添加到数组中。但是,虽然函数 ids 已定义并且我可以使用它访问 id 值,但没有为此 class 定义函数 document_ids。我可以继续定义它,但我的问题是 - 我是否可以不这样做就访问 document_ids 值,也许通过某种方式使用 map 函数(这让我感到困惑)?我想我可以遍历模型,因为它看起来像 returns 一个数组,但没有骰子。谢谢!

[110] pry(#<#<Class:0x00007f99646b1b60>>)> @current_user.document_users.each { |n| puts n }
#<DocumentUser:0x00007f9957cce118>
=> [#<DocumentUser:0x00007f9957cce118
  id: 382,
  user_id: 26638,
  document_id: 282,
  created_at: Wed, 08 May 2019 15:05:42 CDT -05:00,
  updated_at: Wed, 08 May 2019 15:05:42 CDT -05:00>]

是的,应该是这样的:

@current_user.document_users.map(&:document_id)

这是一个 shorthand 这个:

@current_user.document_users.map { |document_user| document_user.document_id }

因为它可能是 ActiveRecord class,所以更好的方法是使用 pluck:

@current_user.document_users.pluck(:document_id)