【问题标题】:Get array of fields from a belongs_to association?从 belongs_to 关联中获取字段数组?
【发布时间】:2013-07-16 06:24:27
【问题描述】:

我有一个对象用户和对象帖子。一个用户有_许多帖子,一个帖子属于_一个用户。 我可以使用如下语法访问用户的帖子:

posts = @user.posts

但是,我想生成用户拥有的帖子的 id 数组,而不是遍历每个帖子。理想情况下,我想这样做:

ids = @user.posts.id

但是,我收到一个错误,说 id 是 ActiveRecord 的无效方法--等等...

有什么方法可以巧妙地做到这一点,而不必像这样循环:

ids = []
posts = @user.posts
posts.each |post| do
   ids << post.id
end

【问题讨论】:

    标签: ruby-on-rails activerecord


    【解决方案1】:

    Rails 为此提供了native method

    @user.post_ids
    

    基本上,您可以使用&lt;singular association name&gt;_idspattern 引用has_many 关联的ID。

    【讨论】:

    • 这甚至比pluck(:id)更好
    【解决方案2】:

    试试ids = posts.map(&amp;:id) or ids = posts.map{|p| p.id }

    你也可以试试ids = posts.pluck(:id)

    【讨论】:

    • pluck 方法是要走的路,只有你必须在帖子前添加用户ids = user.posts.pluck(:id)
    【解决方案3】:

    您也可以使用收集。 收集返回数组。

    ids = @user.posts.collect(&:id)
    

    【讨论】:

      【解决方案4】:

      试试这个:

      @ids = @user.posts.map{|x| x.id }
      

      希望它会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-07
        • 2016-01-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多