我正在尝试在Ruby中创建JoinTable。在我的应用程序中,我有一个名为Professional的实体,另一个名为ProfessionalAttribute。
每个专家都有一个ProfessionalAttribute值。我正在尝试使其通过ProfessionalAttributesProfessionals模型。
这些是我的迁移:
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并尝试检索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)
我不知道我在这里做错了什么。 If与Rails的多元化策略有关。但是现在这让我发疯了,我尝试了一切。
有人可以给我带来启发吗?
谢谢
嗯。我只是发现我需要将类名称从professional_attributes_professionals.rb更改为professional_attributes_professional.rb,并且可以使用。