ruby-on-rails - 空关联的范围

标签 ruby-on-rails ruby activerecord scope associations

我正在尝试创建一个查看空关联的范围。

我有 4 个类:UserIdea ProjectUserJoins

多个用户可以有相同的想法或相同的项目。

我想创建一个范围来隔离没有想法的用户。

创意.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.17Ruby 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/

相关文章:

ruby-on-rails - 预期 #count 已更改为 1,但未获得 block

python - 如何查看是否为 RabbitMQ "is doing well"?

ruby - 尝试在 Windows 8 (x64) : Error installing fast-stemmer-1. 0.2.gem 上安装 Jekyll

php - 如何在 SQL 中的代码点火器中应用 2 OR 和 1 AND 条件?

ruby-on-rails - 如何在Rails 4中查询所有记录而不是.all()?

ruby-on-rails - 为什么在创建新的 Ruby on Rails 应用程序时无法安装我的 gem?

ruby-on-rails - Rails 3.1 : The public directory no longer serves js assets. 如何在页面加载后加载额外的js文件?

ruby-on-rails - Travis CI "ActiveRecord::NoDatabaseError: FATAL: database "jobTrak_test“不存在”

ruby-on-rails - Rails Flash 的行为并不像 Rails 指南所说的那样

ruby-on-rails - 在 rails/activerecord 中准备好的语句