我想为两个模型创建一个M2M关联,一个在不同的命名空间中,当我尝试从任一类访问has_and_belongs_to_many添加的方法时,rails告诉我
ActiveRecord :: StatementInvalid:PG :: UndefinedColumn:ERROR:column namespace_model1s_model2s.model1_id不存在
这是我的模特:
范围/ model1.rb
class Namespace::Model1 < ActiveRecord::Base
has_and_belongs_to_many :model2s
end
model2.rb
class Model2 < ActiveRecord::Base
has_and_belongs_to_many :namespace_model1s
end
从执行此命令rails g migration CreateJoinTableNamespaceModel1sModel2s namespace_model1 model2
class CreateJoinTableNamespaceModel1sModel2s < ActiveRecord::Migration
def change
create_join_table :namespace_model1s, :model2s do |t|
# t.index [:namespace_model1_id, :model2_id]
# t.index [:model2_id, :namespace_model1_id]
end
end
end
最终产生的schema.rb
create_table "namespace_model1s_model2s", id: false, force: :cascade do |t|
t.integer "namespace_model1_id", null: false
t.integer "model2_id", null: false
end
那么,任何人都可以告诉我在哪里蠢蠢欲动吗?
答案 0 :(得分:0)
所以,我的错误是我忘了为命名空间外的每个调用定义class_name: