与Ruby on Rails的JoinTable关系问题

问题描述 投票:0回答:1

我正在尝试在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的多元化策略有关。但是现在这让我发疯了,我尝试了一切。

有人可以给我带来启发吗?

谢谢

ruby-on-rails ruby-on-rails-5
1个回答
0
投票

嗯。我只是发现我需要将类名称从professional_attributes_professionals.rb更改为professional_attributes_professional.rb,并且可以使用。

© www.soinside.com 2019 - 2024. All rights reserved.