Rails has_and_belongs_to_many如何更改默认iforeign键并在csv上显示结果列表

我有桌子产品和供应商。 并加入表products_sup。

我的模型中有产品:

has_and_belongs_to_many :suppliers, :join_table => "products_sup" 

在我的模型供应商:

 has_and_belongs_to_many :products, :join_table => "products_sup" 

在我看来,我想显示每种产品的供应商列表。

但它回来了

Mysql2 ::错误:’on子句’中的未知列’products_sup.product_id’:

请注意,NAME是供应商数据库表中的一列。 而products_sup是加入表。

问题是products_sup包含PRODUCT,SUPPLIER列。 虽然rails默认情况下正在寻找supplier_id和product_id。 但我找不到正确的语法来更改这些默认列。 与belongs_to相同,我会使用`:foreign_key =>’custom_foreign_key_column’

在我的视图和模型中我应该使用什么来实现它?

在产品型号中使用:

 has_and_belongs_to_many :suppliers, join_table: 'products_sup', association_foreign_key: 'SUPPLIER', foreign_key: 'PRODUCT' 

在供应商模型中使用:

 has_and_belongs_to_many :products, join_table: 'products_sup', association_foreign_key: 'PRODUCT', foreign_key: 'SUPPLIER' 

在您的视图中,您需要考虑如何显示供应商,但如果您只想将它​​们显示为逗号,则可以在当前表格中单独列出:

 <%= product.suppliers.map {|supplier| supplier.NAME }.join(', ') %> 

没有考虑使用through:而不是join_table来更好地控制自定义连接。