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 .



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow