Rails / ActiveRecord API - 在连接

时间:2016-12-27 22:36:04

标签: ruby-on-rails activerecord

我有这样的模特:

class User
  has_many :invites
  has_many :follows
  has_many :received_follows, class_name: 'Follow', inverse_of: :recipient

class Invite
  belongs_to :user

class Follow
  belongs_to :user
  belongs_to :recipient, class_name: 'User'

可以邀请用户参加许多活动。此外,用户可以通过单向连接关注其他用户。

我正在访问控制器方法invites#index以获取给定用户的邀请列表。 Invite对象本身并不是特别有用,因此在响应中我想要包括关联的User对象和嵌套的Follow对象(如果适用),如果发出请求的用户跟随该用户 - 这将节省一吨后续API调用。像这样:

invite: {
  id: 1,
  user: {
    id: 1,
    name: 'Foo Bar',
    follow: {
      id: 1
    }
  }
}

为此,我在下表中做了left join,如下所示:

invites = @user.invites.
  joins(:user).
  joins("LEFT JOIN follows ON recipient_id=users.id AND user_id=#{current_user.id}")

这让我获得了我想要的数据,但我不确定如何使用activerecord魔法来为响应者打包它。我试过这个,但由于显而易见的原因,它不会工作:

respond_with invites.to_json(include: [user: [:follow]])

有任何帮助吗?我完全错了吗?

0 个答案:

没有答案