ruby-on-rails - 依次查找关联为nil的所有记录

标签 ruby-on-rails activerecord

给定以下模型:

class Score < ApplicationRecord
  belongs_to :composition
end

class Composition < ApplicationRecord
  has_many :scores
  has_one :invoice, dependent: :destroy
end

class Invoice < ApplicationRecord
  belongs_to :composition
end

找到 分数 的最佳方法是什么,其组成有 nil invoice

我试过:

Score.joins(:composition).where(composition: {invoice: nil})
csn = Composition.includes(:invoice).where(invoices:{id:nil})
Score.where(csn.include? composition)
Score.where(csn.map(&:id).include? composition_id)
Score.where(Composition.left_outer_joins(:invoice).where(invoices:{id:nil}).includes? composition)

全部有错误。有什么想法吗?

编辑:这里是根据schema.rb的相应表格:

  create_table "compositions", force: :cascade do |t|
    ...
  end

  create_table "invoices", force: :cascade do |t|
    t.integer  "composition_id"
    ...
    t.index ["composition_id"], name: "index_invoices_on_composition_id", using: :btree
  end

  create_table "scores", force: :cascade do |t|
    t.integer  "composition_id",                           null: false
    ...
  end

最佳答案

请尝试以下查询:

Score.joins(:composition).includes(composition: : invoice).where(invoices: { id: nil })

关于ruby-on-rails - 依次查找关联为nil的所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48548273/

相关文章:

ruby-on-rails - 一对一 : Undefined method build

ruby-on-rails - ActiveRelation 将如何影响 rails 的 includes() 功能?

ruby-on-rails - 包括不允许外连接和子表计数

mysql 到 codeigniter 事件记录帮助

ruby-on-rails - 从外部 ruby​​ 脚本添加记录

ruby-on-rails - 您最喜欢的Rails管理工具是什么,为什么?

json - 无法修复 Active Record 挂起的迁移错误

ruby-on-rails - 数据库触发器与 Rails ActiveRecord 回调的优缺点?

ruby-on-rails - ActiveRecord::Relation::ActiveRecord_Relation_Link:Class 的未定义方法 `model_name'

ruby-on-rails - 存在 5 个表单元素,但只有 4 个保存到数据库。 rails