我无法在Rails / ActiveRecord中找出多对多的产品/类别关系。我相信我目前已正确设置所有内容,但在尝试创建新关系时,我不断收到以下错误:
uninitialized constant Categorization::ProductId
我的设置如下......
# app/models/product.rb
class Product < ActiveRecord::Base
has_many :categorizations
has_many :categories, :through => :categorizations
end
# app/models/category.rb
class Category < ActiveRecord::Base
has_many :categorizations
has_many :products, :through => :categorizations
end
# app/models/categorization.rb
class Categorization < ActiveRecord::Base
belongs_to :category_id
belongs_to :product_id
end
如果有帮助,则连接表(分类)的迁移文件为:
# db/migrate/20150924153543_create_categorizations.rb
class Categorizations < ActiveRecord::Migration
def change
create_table :categorizations do |t|
t.integer :product_id
t.integer :category_id
t.timestamps null: false
end
end
end
我在尝试以下任何时候都会收到错误:
Categorization.new(category_id: 1, product_id: 1)
ID&1; 1和1都存在......
我最担心的是关系问题,但是......我目前不得不通过将一个产品与一个类别相关联的单个URL来管理这些问题。是否有一种简单的方法可以向&#34;添加产品添加多项选择&#34;页面,以便我可以在创建/编辑产品时关联多个页面?如果不是,我并不那么担心,因为我的主要关注点是让它正常工作。
谢谢!
答案 0 :(得分:3)
# app/models/categorization.rb
class Categorization < ActiveRecord::Base
belongs_to :category
belongs_to :product
end
您对foreign_keys
和ActiveRecord关联感到困惑。
-
product_id
和category_id
是 foreign_keys :
它们基本上帮助ActiveRecord在关联的数据表中找到正确的记录。
-
belongs_to :category
是ActiveRecord association
ActiveRecord自动获取category
引用并从中构建SQL查询。