JoinTable 与 Ruby on Rails 的关系出现问题



我正在尝试在Ruby中创建一个JoinTable。在我的应用程序中,我有一个名为Professional的实体,另一个称为ProfessionalAttribute。

每个专业人员都有一个专业属性值。我试图通过专业属性专业人员模型使其。

这些是我的迁移:

class CreateProfessionalAttributes < ActiveRecord::Migration[6.0]
def change
create_table :professional_attributes do |t|
t.belongs_to :professional_type
t.string :title
t.boolean :show_on_sign_up
t.boolean :show_on_edit_profile
t.boolean :searchable
end
end
end
class CreateProfessional < ActiveRecord::Migration[6.0]
def change
create_table :professionals do |t|
t.belongs_to :professional_type
t.belongs_to :user
end
end
end
class CreateJoinTableProfessionalAttributes < ActiveRecord::Migration[6.0]
def change
create_join_table :professionals, :professional_attributes do |t|
t.index [:professional_id, :professional_attribute_id], {:name => "professional_attributes_index"}
t.string :value
end
end
end

这是我的模型:

class Professional < ApplicationRecord
belongs_to :user
belongs_to :professional_type
has_many :professional_attributes_professionals
end
class ProfessionalAttributesProfessionals < ApplicationRecord
belongs_to :professional
belongs_to :professional_attributes
end

当我运行我的控制台时,如果我创建一个 ProfessionalAttributesProfessionals.new,例如,一切正常。

但是当我创建一个新的专业人员并尝试检索professional_attributes_professionals时,我收到一个错误:

p = Professional.new
=> #<Professional id: nil, professional_type_id: nil, user_id: nil> 

> p.professional_attributes_professionals
Traceback (most recent call last):
2: from (irb):9
1: from (irb):9:in `rescue in irb_binding'
NameError (uninitialized constant Professional::ProfessionalAttributesProfessional)

我不知道我在这里做错了什么。如果与 Rails 的复数策略有关。但现在这让我发疯,我尝试了一切。

有人可以给我带来光明吗?

谢谢

嗯。我刚刚发现我需要将类名从 professional_attributes_professionals.rb 更改为 professional_attributes_professional.rb 并且它可以工作。

最新更新