Как использовать методы поиска для значений таблицы соединений? - PullRequest
0 голосов
/ 02 июня 2018

В моем приложении Ruby on Rails я создал таблицу соединений в своей базе данных, чтобы связать клиентов и компании.Теперь я пытаюсь найти информацию об одной из моделей на основе информации в таблице соединений (называемой «конфликтами»):

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

Я хочу найти информацию о клиенте (или компании), непосредственно связанную с данным «конфликтом», и распечататьэто для просмотра в браузере.

Ошибка, которую я получаю сейчас: неопределенный метод "конфликтов" для #

Ответы [ 2 ]

0 голосов
/ 03 июня 2018

Согласно предоставленному описанию, вы создали таблицу соединения, в которой есть ссылки как на клиентов, так и на предприятия.

И указанная ошибка кажется, что вы забыли связать их в своих моделях.

customer.rb

class Customer < ApplicationRecord
  has_many :customer_conflicts
  has_many: conflicts, through: :customer_conflicts
end

конфликта.rb

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

customer_conflict.rb

class CustomerConflict < ApplicationRecord
 belongs_to :customer
 belongs_to :conflict
end

Теперь будут работать следующие запросы:

@customer = Customer.where(customer_id: 1).conflicts
@customer = Customer.find(1).conflicts
0 голосов
/ 02 июня 2018

Чтобы получить конфликт через клиента, вы должны иметь следующую связь в модели клиента (customer.rb):

has_one: конфликт ИЛИ has_many: конфликты

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...