如何不通过table_id

时间:2018-12-26 08:48:54

标签: ruby-on-rails activerecord rails-activerecord

我需要(被命令)通过CODE列(字符串)联接两个表。但是连接表Product.joins(:skus)的默认方法(也是正确方法)是通过ID=TABLE_ID进行的。 在这种情况下最好的解决方法是什么,而无需编写以下方法:

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

1 个答案:

答案 0 :(得分:3)

根据ActiveRecord的文档,您可以指定关系的primary_keyforeign_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