2010-12-30 5 views
0

Ich versuche, diese Tabelle in Rails zu erstellen:Wie kann ich eine SQLite-Spalte "primary" mit Rails benennen?

create_table :artist_names do |t| 
    t.string :name 
    t.boolean :primary, :default => true 
    t.integer :artist_id 

    t.datetime :deleted_at 
    t.timestamps 
end 

jedoch meine Fragen dagegen fehl:

[Dev]> ArtistName.all(:conditions => ['artist_names.primary = ?', true]) ArtistName Load (0.0ms) 
SQLite3::SQLException: near "primary": syntax error: SELECT * FROM "artist_names" WHERE (artist_names.primary = 't') AND ("artist_names"."deleted_at" IS NULL) 
ActiveRecord::StatementInvalid: SQLite3::SQLException: near "primary": syntax error: SELECT * FROM "artist_names" WHERE (artist_names.primary = 't') AND ("artist_names"."deleted_at" IS NULL) 

Meine Abfragen arbeiten, wenn ich den Namen der Spalte zu ändern auf etwas anderes, aber die Name "primär" macht mir am meisten Sinn.

Wie kann ich dies unter Beibehaltung des Spaltennamens "primär" machen?

Antwort

1

Benutzer-Ticks um Primärwort.

ArtistName.all(:conditions => ['`primary` = ?', true]) ... 
+0

Dieser Link auf der anderen Antwort war gut: http://www.sqlite.org/lang_keywords.html –

+0

Das ist richtig, aber die wirkliche Antwort ist „die Spalte umbenennen“; Rails kennt die Backtick-Regel nicht und Sie können sich bei der Verwendung von ActiveRecord nicht darauf verlassen –

Verwandte Themen