ruby-on-rails - 创建记录时不保存 HABTM 关联

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

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

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


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 => "Seafood")



它似乎没有保存 HABTM 关系 -> 当我重新启动控制台时,关系消失了 - 我还在数据库内部进行了检查,在那里我得到了一个空表 食品_葡萄酒 table 。

我在这里遗漏了一些重要的东西吗?

最佳答案

我认为,你必须更换:

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本类(葡萄酒)。

关于ruby-on-rails - 创建记录时不保存 HABTM 关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17479240/

相关文章:

Laravel 4.1 - 基于数据透视表值的 Eloquent 延迟加载和过滤结果

node.js - 在 Sequelize 中创建多对多关联的问题。 (属于多)

ruby - 导轨 : assign multiple params via form_for check_box for HABTM relationship

ruby-on-rails - 没有要加载的文件——rubygems (LoadError)

ruby-on-rails - Rails Cucumber 测试 - 将表单数据发送到方法

ruby-on-rails - rails : Make views editable by end-users?

ruby-on-rails - 如何在 Rails 3.2 中找到 "SystemStackError (stack level too deep)"的来源

ruby-on-rails - 如何在 Rails 中调试静默数据库错误(例如 "save")?

ruby-on-rails - 如何在Rails中建立多对多关系

ruby-on-rails - Rails 4.2 保存 has_and_belongs_to_many 关联 ID