给定以下模型:
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/