我正在尝试创建一个查看空关联的范围。
我有 4 个类:User
、Idea
Project
和 UserJoins
。
多个用户可以有相同的想法或相同的项目。
我想创建一个范围来隔离没有想法的用户。
创意.rb
has_many :user_joins
has_many :users, through: :user_joins
项目.rb
has_many :user_joins
has_many :users, through: :user_joins
用户.rb
has_many :user_joins
has_many :ideas, through: user_joins, source: :imaginable, source_type: 'Idea'
has_many :projects, through: user_joins, source: :imaginable, source_type: 'Project'
scope :without_ideas, ->{
# I'm stuck here.
}
用户加入.rb
belongs_to :imaginable, polymorphic: true
belongs_to :user
我正在使用 Rails 3.2.17
和 Ruby 2.0.0
有没有人有解决这个问题的想法?
最佳答案
您可以包含 user_ideas
,然后检查空 ID。
scope :without_ideas, ->{
includes(:user_ideas).where(user_ideas: { id: nil })
}
这将左加入 user_ideas
然后只匹配 users
根本没有包含 user_idea
条目(因为没有一个加入)。
关于ruby-on-rails - 空关联的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30057500/