我需要(被命令)通过CODE列(字符串)联接两个表。但是连接表Product.joins(:skus)
的默认方法(也是正确方法)是通过ID=TABLE_ID
进行的。
在这种情况下最好的解决方法是什么,而无需编写以下方法:
Product.joins("INNER JOIN skus ON skus.CODE = products.CODE")
答案 0 :(得分:3)
根据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