Ruby on rails RoR活动记录未定义方法

Ruby on rails RoR活动记录未定义方法,ruby-on-rails,ruby,ruby-on-rails-5,Ruby On Rails,Ruby,Ruby On Rails 5,我创建了两个模型用户和服务器,但当我试图向服务器添加数据时,我无法得到我想要的结果。当我在Rails控制台上尝试这个时,我没有得到任何错误。这让我的头疯狂了两天。尝试了很多东西 user.rb class User < ApplicationRecord belongs_to :server end 我得到这个错误: Server Load (0.1ms) SELECT "servers".* FROM "servers" WHERE "servers"."name" = ?

我创建了两个模型用户和服务器,但当我试图向服务器添加数据时,我无法得到我想要的结果。当我在Rails控制台上尝试这个时,我没有得到任何错误。这让我的头疯狂了两天。尝试了很多东西

user.rb

class User < ApplicationRecord
   belongs_to :server
end
我得到这个错误:

  Server Load (0.1ms)  SELECT "servers".* FROM "servers" WHERE "servers"."name" = ?  [["name", "videoyun"]]
Completed in 28ms (ActiveRecord: 0.8ms)
undefined method `user' for #<Server::ActiveRecord_Relation:0x00000004dae158>
这是因为@server是ActiveRecord_关系,而不是服务器实例。您应该使用Server.find_byname:args并检查是否存在?在创建它之前,它将返回一个服务器实例或nil,而不是ActiveRecord关系

您还应该在if语句中为@server分配新的关系。

这是因为@server是ActiveRecord\u关系,而不是服务器实例。您应该使用Server.find_byname:args并检查是否存在?在创建它之前,它将返回一个服务器实例或nil,而不是ActiveRecord关系

class Server < ApplicationRecord
 has_many :user
end
您还应该在if语句中为@server分配新的

class Server < ApplicationRecord
 has_many :user
end
:用户应为:用户

:user应该是:users

此用户正在工作。但是为什么Server.wherename:*args不工作,而Server.find_工作。我仍然无法理解它们之间的区别。这是因为where返回一个服务器数组它不是一个数组实例,但类似于,而find_by返回一个服务器实例而不是一个数组。这一个有效。但是为什么Server.wherename:*args不工作,而Server.find_工作。我仍然无法理解它们之间的区别,因为where返回一个服务器数组它不是一个数组实例,而是类似于,find_by返回一个服务器实例而不是一个数组。
def alert(args)
 @server =  Server.where(name: args)
   if @server == []
     Server.create(name: args)
     respond_with :message, text: t('.bildirim_on')
   else
   end
     @user = @server.user.create(channel_id: 215682104)
end
  Server Load (0.1ms)  SELECT "servers".* FROM "servers" WHERE "servers"."name" = ?  [["name", "videoyun"]]
Completed in 28ms (ActiveRecord: 0.8ms)
undefined method `user' for #<Server::ActiveRecord_Relation:0x00000004dae158>
class Server < ApplicationRecord
 has_many :user
end