Próbuję skonfigurować połączenie z innym db

class Something < ApplicationRecord
  self.abstract_class = true
  establish_connection {adapter:"postgresql",host:"localhost",port:5432,database:"dev_x",user:"user",password:"1234"}
end

Ale za każdym razem, gdy próbuję uruchomić metodę na (np. Coś, o czym otrzymuję błąd:

no implicit conversion of nil into String

Masz jakiś pomysł, dlaczego?

0
knagode 21 luty 2019, 20:50

2 odpowiedzi

Najlepsza odpowiedź

Warto wspomnieć, dlaczego nie użyłem poprawnie kodu. Używamy również klejnotu Octopus (GEM do prowadzenia wielu bazy danych). Metoda natywna {X0}} nie działa, gdy ośmiornica jest włączona :(.

Dla was wszystkich - użyj octopus_establish_connection, ale uważaj: HTTPS: // Github. COM / THIAGOPRAPRADI / OCTOPUS / PISEK / 101

1
knagode 22 luty 2019, 13:10

Twoim problemem jest to, że Something jest abstrakcyjną klasą:

class Something < ApplicationRecord
  self.abstract_class = true # <-------------------------

Klasy abstrakcyjne nie są oznaczane bezpośrednio bezpośrednio, powinieneś je podklasy i instancji podklasy. Nieruchomość abstract_class jest mniej więcej, sposób na modele podklasu bez wywołania sti (dziedziczenie pojedynczej tabeli).

Użyj Something jako klasy podstawowej dla modeli w drugiej bazie danych lub usunąć self.abstract_class = true, aby uczynić go "rzeczywistym" klasą modelu.


Jeśli chodzi o błąd no implicit conversion of nil into String. ACTIVERECORD / CHCEAL / CLASSMETHODS.HTML "Rel =" Nofollow NefErr "> Dokumentacja :

class Shape < ActiveRecord::Base
  self.abstract_class = true
end
Polygon = Class.new(Shape)
Square = Class.new(Polygon)

Shape.table_name   # => nil
Polygon.table_name # => "polygons"
Square.table_name  # => "polygons"
Shape.create!      # => NotImplementedError: Shape is an abstract class and cannot be instantiated.
1
mu is too short 21 luty 2019, 21:23