Ruby on Rails
Schienen-Kochbuch - Fortgeschrittene Schienen-Rezepte / -Lernen und Kodierungstechniken
Suche…
Spielen mit Tischen unter Verwendung der Schienenkonsole
Tabellen anzeigen
ActiveRecord::Base.connection.tables
Löschen Sie eine Tabelle .
ActiveRecord::Base.connection.drop_table("users")
------------OR----------------------
ActiveRecord::Migration.drop_table(:users)
------------OR---------------------
ActiveRecord::Base.connection.execute("drop table users")
Index aus vorhandener Spalte entfernen
ActiveRecord::Migration.remove_index(:users, :name => 'index_users_on_country')
Dabei ist country
ein Spaltenname in der Migrationsdatei mit bereits hinzugefügtem Index in der users
(siehe unten): -
t.string :country,add_index: true
Entfernen Sie die Fremdschlüsseleinschränkung
ActiveRecord::Base.connection.remove_foreign_key('food_items', 'menus')
wo die menus has_many food_items
und ihre jeweiligen Migrationen enthalten.
Spalte hinzufügen
ActiveRecord::Migration.remove_column :table_name, :column_name
zum Beispiel:-
ActiveRecord::Migration.add_column :profiles, :profile_likes, :integer, :default => 0
Rails-Methoden - Rückgabe boolescher Werte
Jede Methode im Rails-Modell kann einen booleschen Wert zurückgeben.
einfache Methode
##this method return ActiveRecord::Relation
def check_if_user_profile_is_complete
User.includes( :profile_pictures,:address,:contact_detail).where("user.id = ?",self)
end
Wieder einfache Methode, die boolesche Werte zurückgibt.
##this method return Boolean(NOTE THE !! signs before result)
def check_if_user_profile_is_complete
!!User.includes( :profile_pictures,:address,:contact_detail).where("user.id = ?",self)
end
Die gleiche Methode gibt jetzt also boolesche Werte zurück :).
Umgang mit dem Fehler - undefined Methode `where 'für #
Manchmal möchten wir eine where
Abfrage für eine zurückgegebene Auflistung von Datensätzen verwenden, die nicht ActiveRecord ActiveRecord::Relation
.Hence ist. Wir erhalten den obigen Fehler als Where
Klausel in ActiveRecord
und nicht in Array
.
Es gibt eine präzise Lösung dafür, indem Sie Joins
.
BEISPIEL : -
Angenommen, ich muss alle aktiven Benutzerprofile (UserProfile) suchen, bei denen es sich nicht um einen Benutzer (Benutzer) mit einer ID = 10 handelt.
UserProfiles.includes(:user=>:profile_pictures]).where(:active=>true).map(&:user).where.not(:id=>10)
Die obige Abfrage schlägt daher nach der map
fehl, da die map
ein array
das mit der where
Klausel nicht funktioniert.
Aber mit Joins wird es funktionieren,
UserProfiles.includes(:user=>:profile_pictures]).where(:active=>true).joins(:user).where.not(:id=>10)
Bei joins
werden ähnliche Datensätze wie map
ausgegeben, es handelt sich jedoch um ActiveRecord
und nicht um ein Array
.