/ / Rails 3 NoMethodError: metodo non definito `name 'per nil: NilClass - ruby, ruby-on-rails-3, activerecord, arel

Rails 3 NoMethodError: metodo non definito `name 'per nil: NilClass - ruby, ruby-on-rails-3, activerecord, arel

Ogni volta che ho provato a usare

Table.create :a=>"a", :b=>"b"

o

tab=Table.new
tab.a="a"
tab.b="b"
tab.save!

produce

NoMethodError: metodo `nome 'non definito per nil: NilClass

il mio modello di tavolo è

class Table < ActiveRecord::Base
set_table_name "table"
set_primary_key "id"
end

risposte:

4 per risposta № 1

Come tutti hanno affermato, TABLE è una parola riservata. Per riferimento futuro, se tu veramente volevo usare queste parole riservate, nelle tue query SQL (so che stai usando l'astrazione AR), dovresti usare i backtick in questo modo:

SELECT * FROM `TABLE`

Tuttavia suggerirei caldamente di cambiare il nome della tua tabella. Un'altra cosa da notare è che non devi impostare la tua chiave primaria id perché i binari vengono utilizzati per impostazione predefinita id per il PK.


2 per risposta № 2

TABLE è una parola riservata in MySQL.

Per il checkout di parole più riservate:

http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html