创建记录时不保存HABTM关联

时间:2013-07-04 23:30:05

标签: ruby-on-rails has-and-belongs-to-many

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

项目正在使用Rails 4,因此没有attr_accessible标记

wine.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

food.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控制台中创建新的Relation时,它似乎没有保存HABTM关系。

  

@ wine.pairings.create(:name =&gt;“Seafood”)

它似乎没有保存HABTM关系 - &gt;当我重新启动控制台时,关系就消失了 - 我也在数据库内部进行了检查,在那里我获得了 foods_wines 表的空表。

我错过了一些关键的东西吗?

1 个答案:

答案 0 :(得分:0)

我想,你必须更换:

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

with:

has_and_belongs_to_many :pairings, class_name: 'Food', join_table: 'foods_wines', foreign_key: 'wine_id'
<{1>}中的

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