has_many :通过关联找不到有效的模型

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

我正在创建与 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
ruby-on-rails activerecord model-associations ruby-on-rails-7
2个回答
0
投票

我认为清除数据库记录并重新播种会有所帮助。不同的是,这次我指定为

user.prospects << [prospect_name]
,以确保在后端创建连接。


0
投票

由于我在关联对象中添加的拼写错误,我收到了此错误。在此示例中,它将是 User 对象。

我添加了类似的内容:

afteR_create :foo

修复并消除了上面列出的问题

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