2017-09-01 22 views
1

我得到的的ActiveRecord ::加盟时ConfigurationError表

几分神秘的错误消息

的ActiveRecord :: ConfigurationError 1

试图执行@invoices = invoice.joins(pos: [vendor_id: 1])

我想,当调用属于供应商1的所有PO的所有发票。

我的模型设置如下: 个供应商可以有许多采购订单,和POS可以有许多发票

class Vendor < ApplicationRecord 
    has_many :pos 

class Po < ApplicationRecord 
    belongs_to :vendor 
    has_many :items, :dependent => :destroy 
    has_many :invoices 

class Invoice < ApplicationRecord 
    belongs_to :po 

我收集了的ActiveRecord :: ConfigurationError是

时引发联想正在配置不当或用户试图 要使用分组和限制ActiveRecord :: Base.has_many或ActiveRecord :: Base.has_and_belongs_to_many关联。

但是我很难弄清楚我的关联有什么问题。有任何想法吗?

回答

0

我认为你的关联是可以的......我认为你的陈述是不好的,通常当我需要这样查询时,我会诉诸一点SQL语句,因为它太复杂或难以阅读除此以外。

试试这个(注意是大写的我在发票):

vendor_id = 1 
@invoices = Invoice.joins(:po).where("pos.vendor_id = ?", vendor_id) 
+0

感谢您的帮助!这或多或少的工作,尽管有一个小的语法调整: @invoices = Invoice.joins(:po).where(“pos.vendor_id =?”,vendor_id) – Coalsand

+0

很酷......很高兴帮助。你会将答案标记为正确吗? –