我创建了两个模型User和Server但是当我尝试向服务器添加数据时,我无法得到我想要的结果。当我在Rails控制台上尝试这个时,我没有收到任何错误。这让我头脑发疯了2天了。尝试了很多东西。
user.rb
class User < ApplicationRecord
belongs_to :server
end
用户迁移
class CreateUsers < ActiveRecord::Migration[5.0]
def change
create_table :users do |t|
t.integer :channel_id
t.timestamps
end
end
end
server.rb
class Server < ApplicationRecord
has_many :user
end
服务器迁移
class CreateServers < ActiveRecord::Migration[5.0]
def change
create_table :servers do |t|
t.string :name
t.timestamps
end
end
end
我的控制器:
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>
答案 0 :(得分:3)
这是因为@server
是ActiveRecord_Relationship
,而不是Server
实例。您应该使用Server.find_by(name: args)
并在创建之前检查是否.present?
(它将返回Server实例或nil,而不是ActiveRecord关系)。
此外,您应该在if语句中为@server
分配新的。
答案 1 :(得分:0)
class Server < ApplicationRecord
has_many :user
end
:user
应为:users