使用别名时无法为HABTM连接表提供种子

时间:2017-01-24 09:56:52

标签: ruby-on-rails-4

我有一个客户端和工人模型。工作人员可以将客户列入黑名单。如果列入黑名单,客户和工作人员将永远不会再次配对。在我的工人模型中,

has_and_belongs_to_many :blacklisted_clients, class_name: 'Client',
  join_table: 'blacklisted_clients_workers',
  association_foreign_key: 'blacklisted_client_id'

在我的客户端模型中,

has_and_belongs_to_many :workers,
  join_table: 'blacklisted_clients_workers',
  foreign_key: 'blacklisted_client_id'

联接表blacklisted_clients_workers由两列worker_idblacklisted_client_id组成。我曾试图将这种关联归结为,

Worker.create!(
  blacklisted_clients: BlacklistedClient.where(id: (1..200).to_a.shuffle.take(3)),
)

当我这样做时,我收到一条错误

NameError: uninitialized constant BlacklistedClient

我做错了什么?

1 个答案:

答案 0 :(得分:3)

当您编写 BlacklistedClient.where(....)时,有效支持会查找BlacklistedClient 模型,这是您的客户端模型。

您已为不是模型的客户创建了blacklisted_clients关系。

尝试使用客户端而不是 BlacklistedClient 来创建相同的内容。