PDA

Visualizza la versione completa : Tableless model


reo
30-07-2009, 11:30
Ciao a tutti, ecco il mio problemino:

Stavo provando a fare qualche test con i modelli Tableless al fine di poterli poi integrare in webservices (ma poco importa).

Ora, seguendo questo (http://codetunes.com/2008/07/20/tableless-models-in-rails/) post il giochetto sembra alquanto banale.

Il mio medello User si presenta così:


# models/user.rb

class User < ActiveRecord::Base
def self.columns
@columns ||= []
end

def self.column(name, sql_type = nil, default = nil, null = true)
columns << ActiveRecord::ConnectionAdapters::Column.new(name. to_s, default, sql_type.to_s, null)
end

# Manually define the columns used by this model
column :id, :integer
column :email, :string
column :password, :string

# Override the save method to prevent exceptions.
def save(validate = true)
validate ? valid? : true
end

end

benissimo.

A questo punto faccio una piccola verifica e provo a creare un nuovo oggetto:
http://localhost:3001/users/new -> inserisco i miei dati fittizi ed invio il form.

Vengo dunque ridirezzionato al metodo show con questo risultato: "ActiveRecord::ActiveRecordError: no such table: users: SELECT * FROM users LIMIT 1"



#controllers/users_controller.rb

def show
@user = User.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @user }
end
end

Capisco che non può eseguire il find ma come posso raggiungere e visualizzare l'oggetto tableless appena istanziato?

[Rails 2.3.3, Ruby 1,8,6]

weppos
30-07-2009, 13:56
Capisco che non può eseguire il find ma come posso raggiungere e visualizzare l'oggetto tableless appena istanziato?


Non esiste alcun oggetto istanziato.
Find fallisce, dunque genera una eccezione. @user vale nil poiché non è stato possibile trovare/istanziare alcun oggetto.

toraz
03-08-2009, 15:58
Ci ho pensato e ripensato ma non sono arrivato a una conclusione, qual'è lo scopo di fare una cosa del genere?

reo
07-08-2009, 16:10
Originariamente inviato da toraz
Ci ho pensato e ripensato ma non sono arrivato a una conclusione, qual'è lo scopo di fare una cosa del genere?

Ad esempio potrebbe essere utile creare un webservice che effettua delle elaborazioni matematiche complesse necessarie a più web applications.

Per rimanere con i piedi per terra, ipotizza di voler creare un webservice che restituisce la somma di due numeri trasmessi...

Loading