Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 使用别名时无法为HABTM联接表设定种子_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 4 使用别名时无法为HABTM联接表设定种子

Ruby on rails 4 使用别名时无法为HABTM联接表设定种子,ruby-on-rails-4,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 :work

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

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'
在我的客户模型中

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\u clients\u workers
,由两列组成,
worker\u id
blacklisted\u client\u id
。我已经试着与

Worker.create!(
  blacklisted_clients: BlacklistedClient.where(id: (1..200).to_a.shuffle.take(3)),
)
当我这样做的时候,我会得到一个错误

NameError: uninitialized constant BlacklistedClient

我做错了什么?

当您编写BlacklistedClient时。其中(…)主动支持将查找BlacklistedClient模型,这是您的客户端模型

您已经为非模型客户创建了一个关系作为黑名单客户


尝试用客户端而不是黑名单客户端包装相同的内容

当您编写BlacklistedClient时。其中(…)
主动支持将查找BlacklistedClient模型,该模型是您的客户端模型

您已经为非模型客户创建了一个关系作为黑名单客户


尝试用客户端而不是黑名单客户端包装相同的内容

如果我使用
blacklisted\u clients:Client.where(id:(1..200).to\u a.shuffle.take(3)
,错误消失,但没有任何内容被植入联接表中。这是因为您的查询返回空白。更多黑名单\u客户端:如果它是工作模型的字段,则应该被黑名单\u客户端id:然后是一些值。还有一件事是client.create!(…)将一次创建一个记录,因此您需要有一个循环,该循环逐个获取客户端id,并在工作模型中插入一个记录。问题已解决-VK29是正确的。行
黑名单\u客户端:黑名单客户端。其中(id:(1..200)。to \u a.shuffle.take(3))
,应该是
黑名单\u客户端:client.where(id:(1..200)。to \u a.shuffle.take(3))
。我遇到的另一个问题是,我在种子文件中创建工作模型后创建了客户端模型。因此,当我尝试创建联接表时,客户端模型为空。我只是将对客户端模型的种子设定移到对工作模型的种子设定之上,一切正常。VK29在使用循环时不正确。客户端。其中(id:[])可以接受一个数组。
(1..200)。to_a.shuffle.take(3)
就是这样做的。在此之前,我已经创建了200个客户端。
(1..200)。to_a.shuffle.take(3)
给了我一个随机数组,其中3个id介于1和200之间。由此生成的SQL是
从“clients”中选择“clients.id”,其中“clients”。(153,97,166)中的“id”
作为一个例子。我很高兴能够帮助您。:)并感谢随机数组的事情……当时我意识到了这一点,无法回忆起它。还是谢谢你的信息@RamJetIf我使用
黑名单的客户机:Client.where(id:(1..200).to_a.shuffle.take(3)
,错误消失,但没有任何内容被植入联接表中。这是因为您的查询返回空白。更多黑名单\u客户端:如果它是工作模型的字段,则应该被黑名单\u客户端id:然后是一些值。还有一件事是client.create!(…)将一次创建一个记录,因此您需要有一个循环,该循环逐个获取客户端id,并在工作模型中插入一个记录。问题已解决-VK29是正确的。行
黑名单\u客户端:黑名单客户端。其中(id:(1..200)。to \u a.shuffle.take(3))
,应该是
黑名单\u客户端:client.where(id:(1..200)。to \u a.shuffle.take(3))
。我遇到的另一个问题是,我在种子文件中创建工作模型后创建了客户端模型。因此,当我尝试创建联接表时,客户端模型为空。我只是将对客户端模型的种子设定移到对工作模型的种子设定之上,一切正常。VK29在使用循环时不正确。客户端。其中(id:[])可以接受一个数组。
(1..200)。to_a.shuffle.take(3)
就是这样做的。在此之前,我已经创建了200个客户端。
(1..200)。to_a.shuffle.take(3)
给了我一个随机数组,其中3个id介于1和200之间。由此生成的SQL是
从“clients”中选择“clients.id”,其中“clients”。(153,97,166)中的“id”
作为一个例子。我很高兴能够帮助您。:)并感谢随机数组的事情……当时我意识到了这一点,无法回忆起它。还是谢谢你的信息@冲压发动机