Ich erstellte 2 Modelle Benutzer und Server, aber wenn ich versuchte, eine Daten zu Server hinzufügen, kann ich nicht das Ergebnis, das ich will. Wenn ich dies auf der Rails-Konsole versuchte, erhalte ich keine Fehler. Das macht meinen Kopf seit 2 Tagen verrückt. Ich habe viele Dinge probiert.RoR Active Records undefined Methode
user.rb
class User < ApplicationRecord
belongs_to :server
end
Benutzermigration
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
Server Migration
class CreateServers < ActiveRecord::Migration[5.0]
def change
create_table :servers do |t|
t.string :name
t.timestamps
end
end
end
Mein Controller:
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
ich diese Störung erhalte:
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>
sein. Aber warum 'Server.where (name: * args)' nicht funktioniert und 'Server.find_by' funktioniert. Ich konnte den Unterschied zwischen ihnen immer noch nicht verstehen. –
Weil 'where' ein" Array "von Servern zurückgibt (es ist keine Array-Instanz, ist aber ähnlich), und' find_by' gibt eine Instanz des Servers zurück (anstelle eines "Arrays"). –