Was bedeutet :: Basisteil in Person < ActiveRecord :: Basisklasse Deklaration? Ich bin neu in Ruby und von dem, was ich bisher gesammelt habe, sollte Person < ActiveRecord verwendet werden. Danke.:: Basisteil Bedeutung in ActiveRecord :: Base
Antwort
:: Base ist eine Klasse im Modul Active. Eines der Dinge, die Module tun, ist Namespacing in Ruby bereitzustellen. In Ruby erben Sie nicht von einem Modul, aber Sie können es mit der Include-Anweisung mischen.
Darf ich vorschlagen, das Buch Pickaxe abzuholen oder zu lesen.
in Ruby, ::
greift auf statische Klasse oder Modul Konstanten. ActiveRecord::Base
zeigt an, dass die ActiveRecord
Klasse oder das Modul eine statische innere Klasse namens Base
hat, die Sie erweitern.
Edit: als Mike weist darauf hin, in diesem Fall ActiveRecord
ist ein Modul ...
Active als Modul in Rails definiert ist, http://github.com/rails/rails/tree/master/activerecord/lib/active_record/base.rb –
::
ist ein unärer Operator, mit dem Sie auf eine Konstante, ein Modul oder eine Klasse zugreifen können, die in einer anderen Klasse oder einem anderen Modul definiert sind. Es wird verwendet, um Namespaces bereitzustellen, sodass Methoden- und Klassennamen nicht von anderen Autoren mit anderen Klassen in Konflikt stehen.
Wenn Sie Active siehe :: Base in Rails bedeutet dies, dass in Rails ActiveRecord::Base
so etwas wie diese
module ActiveRecord
class Base
end
end
Das bedeutet, dass eine Klasse genannt Base
in einem ModulActiveRecord
ist, die dann referenziert wie ActiveRecord::Base
Zum besseren Verständnis von :: Operator, gehen Sie einfach durch dieses Beispiel von tutorialspoint.com:
MR_COUNT = 0 # constant defined on main Object class
module Foo
MR_COUNT = 0
::MR_COUNT = 1 # set global count to 1
MR_COUNT = 2 # set local count to 2
end
puts MR_COUNT # this is the global constant
puts Foo::MR_COUNT # this is the local "Foo" constant
- 1. Erweitern ActiveRecord :: Base
- 2. Kein Verbindungspool für ActiveRecord :: Base
- 3. ActiveRecord :: Base gehört nicht in eine Hierarchie von ActiveRecord absteigend
- 4. alias_method auf Activerecord :: Base Ergebnisse in Nameerror
- 5. Sortierbare UUIDs und Überschreiben von ActiveRecord :: Base
- 6. proxy_reflection Äquivalent auf ActiveRecord :: Base # finden?
- 7. ActiveRecord :: Base before_validation mit bedingten nicht ausgelöst
- 8. Was die Bedeutung von „xsd ist:?. Erweiterung base = ....
- 9. nicht definierte Methode raise_in_transactional_callbacks =‘für Activerecord :: Base: Klasse (NoMethodError)
- 10. Warum verwendet Rails 5 ApplicationRecord anstelle von ActiveRecord :: Base?
- 11. Ruby "Base" Klassen
- 12. Laravel Base vs \ Base
- 13. ActiveRecord Teilupdates in Padrino
- 14. ActiveRecord-Sanitizierungsmethoden in Klasse
- 15. xml: base in JAXB
- 16. ActiveRecord
- 17. Stub ActiveRecord :: Relation mit ActiveRecord-Objekten
- 18. Bug beim Einschalten 4.1 Rails - `method_missing ': nicht definierte Methode` whitelist_attributes =' für Activerecord :: Base: Klasse (NoMethodError)
- 19. Ich erhalte Fehler beim Installieren von Spree? undefinierte Methode `mass_assignment_sanitizer = 'für ActiveRecord :: Base: Klasse (NoMethodError)
- 20. ActiveRecord: Finden ohne Verknüpfungen
- 21. Activerecord :: Base find-Methode (akzeptieren, nicht-Standard-ID-Feld als Suchparameter)
- 22. activerecord durch Zuordnung
- 23. ActiveRecord hat zwei association
- 24. ActiveRecord :: NestedAttributes :: TooManyRecords Fehler
- 25. Swift `in` Keyword Bedeutung?
- 26. Bedeutung von "." in printf
- 27. Hat! = Bedeutung in OCaml?
- 28. Bedeutung von {*; } In ProGuard
- 29. ActiveRecord :: AssociationTypeMismatch in Controller (Schienen)
- 30. # <Activerecord :: Verbände :: CollectionProxy []> in Rails
Mike, danke, ich muss wirklich die Spitzhacke aufheben, Wortspiel beabsichtigt ;-) – Valentin
Gern geschehen. Viel Glück! –