0

私は ActiveRecord を最大限に活用しようとしていますが、私が望む方法で結合を行うのに問題があります。

私のモデルの設定方法は次のとおりです。

class Model
    has_many :likes
end

class Like
    belongs_to :model
    belongs_to :user
end

class User
    has_many :likes
end

「モデル」オブジェクトからすべてのいいねを取得し、そこからいいねを作成したすべてのユーザーを取得したいと思います。これが私のActiveRecordクエリです

@model = Model.find(params[:id])
@users = @model.likes.joins(:user)

ただし、コードの最後の行が返すのはユーザーではなく、like です。結合を適切に使用して、私が望むことを行う方法はありますか?

ありがとう、
DO

4

2 に答える 2

3

あなたはそれを行うことができますhas_many :through

class Model
    has_many :likes
    has_many :users, :through => :likes
end

または、ユーザーを熱心にロードして Ruby で結合することもできます。

@users = @model.likes.includes(:user).map(&:user)
于 2013-05-08T14:43:46.010 に答える