我的模型Grain_input与" weight_fact"字段
class GrainInput < ApplicationRecord
has_many :movements, as: :sourceable
end
和模型运动&#34;金额&#34;字段
class Movement < ApplicationRecord
belongs_to :sourceable, polymorphic: true
belongs_to :targetable, polymorphic: true
end
grain_input有很多动作。例如,grain_input的一部分从存储到设备,其他部分在其他地方。 我需要得到所有仍存在于存储中的grain_input。 范围:
scope :at_storage, -> {
joins(:movements).
group("grain_inputs.id").
having("sum(movements.amount) < grain_inputs.weight_fact") }
此范围有效,但仅返回具有移动的grain_inputs。 但是我需要grain_inputs,它也没有动作。
请帮助确定范围。
答案 0 :(得分:0)
您可以尝试左连接
scope :at_storage, -> {
joins("LEFT JOIN `movements` ON movements.grain_input_id = grain_inputs.id" ).
group("grain_inputs.id").
having("sum(movements.amount) < grain_inputs.weight_fact") }