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来更好地控制自定义连接。