【问题标题】:Cannot iterate through the attributes of an object无法遍历对象的属性
【发布时间】:2020-06-28 15:31:17
【问题描述】:

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

[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>]

【问题讨论】:

    标签: ruby-on-rails ruby attributes instance-variables


    【解决方案1】:

    是的,应该是这样的:

    @current_user.document_users.map(&:document_id)
    

    这是这个的简写:

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

    由于它可能是ActiveRecord 类,因此使用pluck 是实现此结果的更好方法:

    @current_user.document_users.pluck(:document_id)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-08
      • 2014-08-09
      • 2016-05-12
      • 2021-08-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多