如何在连接表值上使用finder方法?

时间:2018-06-02 15:05:22

标签: ruby-on-rails activerecord jointable

在我的Ruby on Rails应用程序中,我在我的数据库中创建了一个连接表来链接客户和企业。现在我试图根据连接表中的信息(称为"冲突")来查找其中一个模型的信息:

@customer = Customer.where(customer_id:1).conflict(s) @customer = Customer.find(1).conflict(s)

我想查找与给定"冲突"直接关联的客户(或业务)的信息,并将其打印到浏览器视图。

我现在得到的错误: 未定义的方法`冲突'对于#

2 个答案:

答案 0 :(得分:0)

要通过客户发生冲突,您应该在客户模型(customer.rb)中具有以下关联,

has_one:冲突 要么 has_many:冲突

答案 1 :(得分:0)

根据提供的说明,您创建了一个连接表,其中包含客户和企业的参考。

您提供的错误,似乎您忘记将它们关联到您的模型中。

customer.rb

class Conflict < ApplicationRecord
   has_many :customer_conflicts
   has_many :customers, through: :customer_conflicts
end

conflict.rb

class CustomerConflict < ApplicationRecord
 belongs_to :customer
 belongs_to :conflict
end

customer_conflict.rb

@customer = Customer.where(customer_id: 1).conflicts
@customer = Customer.find(1).conflicts

现在运行下面提到的查询将起作用:

{
  Name: "Automotive"
  RefCategory: 1,
  ChildCategories:[{
     Name: "Car"
     RefCategory: 2,
     ChildCategories: []
  },{
     Name: "Motorcycle"
     RefCategory: 3,
     ChildCategories: []
  }]
}