在连接模型上有许多通过额外属性

时间:2015-08-05 00:17:53

标签: ruby-on-rails-4 activerecord

我有以下型号

class Profile < ActiveRecord::Base
  has_many :facebook_groups, through: :group_memberships
end

class FacebookGroup < ActiveRecord::Base
  has_many :group_memberships
  has_many :profiles, through: :group_memberships
end

class GroupMembership < ActiveRecord::Base
  belongs_to :facebook_group
  belongs_to :profile
end

我在GroupMembership模型上有一个名为:favorite的属性 我正在构建一个端点来检索配置文件的组。就像是: {groups:[name:'groupA',created_at:somedate,favorite:true]} 我怎么能得到这个? 谢谢你的帮助

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您希望在特定的个人资料中找到所有受欢迎的group_membership。在rails中,通常可以通过在GroupMembership模型上定义范围来完成。

scope :favorites, -> { where(favorite: true) }

然后你可以通过Profile模型检索它们。这将为您提供相关的group_memberships,其中favorite属性为true:

@profile.group_memberships.favorites

此外,您似乎需要在个人资料模型中定义has_many :group_memberships以完成关联。