如何将 ActiveRecord_AssociationRelation 转换为 ActiveRecord 中的数组?

use*_*553 4 ruby-on-rails

如何将 aActiveRecord_AssociationRelation转换为 Rails 模型实例数组?

我有这样一个after_save钩子的代码:

class Like < ApplicationRecord
  belongs_to :likee, class_name: 'User', foreign_key: 'likee_id'
  belongs_to :liker, class_name: 'User', foreign_key: 'liker_id'

  after_save :mutual_like?

  private

  def mutual_like?
    if liker.likes.where(likee: liker) // returns collection proxy but I want to return an array of model instances so that I can create another model

    end
  end
end
Run Code Online (Sandbox Code Playgroud)

有没有办法返回实例数组?

表供参考:

  create_table "likes", force: :cascade do |t|
    t.integer  "liker_id",      null: false
    t.integer  "likee_id",      null: false
    ...
  end
Run Code Online (Sandbox Code Playgroud)

我认为问题在于 Rails 没有根据 likee_id / liker_id 的外键关联模型。

小智 6

尝试ActiveRecord#to_a

liker.likes.where(likee: liker).to_a

to_a() 民众

将关系对象转换为数组。