Как объединять таблицы не по table_id - PullRequest
0 голосов
/ 26 декабря 2018

Мне нужно (было заказано) СОЕДИНИТЬ две таблицы по столбцу CODE (строка).Но по умолчанию (и правильный) способ объединения таблиц Product.joins(:skus) состоит в том, чтобы сделать это через ID=TABLE_ID Что лучше всего сделать в этой ситуации, и есть ли способ сделать это без необходимости писать:

Product.joins("INNER JOIN skus ON skus.CODE = products.CODE")

1 Ответ

0 голосов
/ 26 декабря 2018

На основе документации ActiveRecord вы можете указать primary_key и foreign_key отношения.

product.rb:

class Product < ApplicationRecord
  has_many :skus, foreign_key: :code, primary_key: :code
end

sku.rb:

class Sku < ApplicationRecord
  belongs_to :product, foreign_key: :code, primary_key: :code
end

и теперь вы можете просто использовать Product.joins(:skus) или Product.includes(:skus) или событие Product.first.skus

...