鉴于以下模式:
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找到分数的最佳方法是什么,它的组成有一张发票
我试过:
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发布于 2018-01-31 17:58:17
请尝试以下查询:
Score.joins(:composition).includes(composition: : invoice).where(invoices: { id: nil })发布于 2018-01-31 17:53:23
试着跟随
Score.joins(:composition).where('compositions.invoice_id IS NULL')上面应该管用,祝你好运!
发布于 2018-01-31 19:55:34
请尝试以下查询,
Score.joins(:composition).where('compositions.id NOT IN (?)', Invoice.pluck(:composition_id))如果这不起作用,那么让我知道compositions表和scores表中的列
https://stackoverflow.com/questions/48548273
复制相似问题