4

我有这两个模型,在 HABTM 关系中:

该项目使用的是 Rails 4,所以没有 attr_accessible 标签

葡萄酒.rb

class Wine < ActiveRecord::Base

  has_and_belongs_to_many :pairings, class_name: 'Food', join_table: 'foods_wines', association_foreign_key: 'food_id'
  has_many :images, as: :attachable, class_name: 'Asset', dependent: :delete_all
end

食物.rb

class Food < ActiveRecord::Base
  has_and_belongs_to_many :wines, class_name: "Wine", join_table: "foods_wines", foreign_key: "food_id"
end

我使用此迁移创建了联接表:

create_table(:foods_wines, :id => false) do |t|
  t.integer :food_id
  t.integer :wine_id
end

add_index :foods_wines, [:food_id, :wine_id]

当我尝试在 Rails 控制台中创建新关系时,它似乎没有保存 HABTM 关系。

@wine.pairings.create(:name => "海鲜")

它似乎没有保存HABTM关系->当我重新启动控制台时,关系消失了-我还检查了数据库内部,在那里我得到了foods_wines表的空表。

我在这里错过了一些重要的东西吗?

4

1 回答 1

0

我认为,你必须更换:

has_and_belongs_to_many :pairings, class_name: 'Food', join_table: 'foods_wines', association_foreign_key: 'food_id'

和 :

has_and_belongs_to_many :pairings, class_name: 'Food', join_table: 'foods_wines', foreign_key: 'wine_id'

wine.rb,因为您必须指定foreign key此类(Wine)的。

于 2015-01-14T14:01:18.350 回答