我正在创建与 Rails Guides Patient-Appointment-Physician 数据模型几乎相同的关联。一个用户有很多
prospects
到 prospect_subscription
。但是,当尝试在 Rails 控制台中访问 user.prospects
时,会抛出以下错误:
Rails couldn't find a valid model for Prospects association. Please provide the :class_name option on the association declaration. If :class_name is already provided, make sure it's an ActiveRecord::Base subclass. (NameError)
uninitialized constant User::Prospects (NameError)
这很奇怪,因为所有三个模型都在那里。迁移已运行,示例数据已填充,可以在 pgAdmin 中检查。为什么 Rails 找不到模型?
模型中定义的关联如下:
models/prospect.rb
class Prospect < ApplicationRecord
has_many :prospect_subscriptions
has_many :users, through: :prospect_subscriptions
end
models/user.rb
class User < ApplicationRecord
has_many :prospect_subscriptions
has_many :prospects, through: :prospect_subscriptions
end
models/prospect_subscription.rb
class ProspectSubscription < ApplicationRecord
belongs_to :user
belongs_to :prospect
end
我认为清除数据库记录并重新播种会有所帮助。不同的是,这次我指定为
user.prospects << [prospect_name]
,以确保在后端创建连接。
由于我在关联对象中添加的拼写错误,我收到了此错误。在此示例中,它将是 User 对象。
我添加了类似的内容:
afteR_create :foo
修复并消除了上面列出的问题