Max Janot’s World

1 luglio 2008

Creiamo un’applicazione web con Rails – Modello dati

Filed under: Howto,Linux,Rails,ruby — maxjanot @ 4:13 PM
Tags: ,

Passiamo alla seconda puntata di questo nostro tutorial (questo il link alla prima lezione) riguardante la creazione di un’applicazione che utilizzi il framework Rails. Stavolta ci occuperemo della progettazione del modello dei dati.

Capitolo 4: Configurazione del database

Innanzitutto configuriamo il nostro database, editando il file config/database.yml tenendo conto della configurazione del nostro database.

development:
adapter: mysql
database: warehouse_development
username: root
password:
host: localhost
# Warning: The database defined as 'test' will be erased and
# re-generated from your development database when you run 'rake'.
# Do not set this db to the same as development or production.
test:
adapter: mysql
database: warehouse_test
username: root
password:
host: localhost
production:
adapter: mysql
database: warehouse_production
username: root
password:
host: localhost

Creiamo il db:

rake db:create:all

Capitolo 5: Definizione del modello dei dati

Passiamo alla definizione del modello dei dati della nostra applicazione. Consideriamo le tabelle di cui abbiamo bisogno e creiamo i file di definizione relativi utilizzando i comandi:

ruby script/generate migration create_suppliers
ruby script/generate migration create_people
ruby script/generate migration create_invoices
ruby script/generate migration create_articles

Editiamo, ora, i file per la creazione delle tabelle nella directory db/migrate/

001_create_suppliers.rb
class CreateSuppliers < ActiveRecord::Migration
def self.up
create_table :suppliers do |table|
table.column :name, :string, :limit => 20, :null => false, :default => ""
table.column :address, :text
table.column :telephone, :string, :limit => 20
table.column :reference, :text
table.column :category, :string, :limit => 20
end
add_index :suppliers, :name, :unique
end
def self.down
drop_table :suppliers
end
end

002_create_people.rb
class CreatePeople < ActiveRecord::Migration
def self.up
create_table :people do |table|
table.column :surname, :string, :limit => 30, :null => false
table.column :name, :string, :limit => 30, :null => false
table.column :location, :string, :limit => 20
table.column :telephone, :string, :limit => 20
table.column :gruppo, :string, :limit => 20
end
end
def self.down
drop_table :people
end
end

003_create_invoices.rb
class CreateInvoices < ActiveRecord::Migration
def self.up
create_table :invoices do |table|
table.column :number, :string, :limit => 20
table.column :year, :integer
table.column :data, :date
table.column :supplier_id, :integer
table.column :tipo, :string, :limit => 20
end
execute 'ALTER TABLE invoices ADD CONSTRAINT fk_inv_suppliers_id FOREIGN KEY ( supplier_id ) REFERENCES suppliers( id ) '
end
def self.down
drop_table :invoices
end
end

004_create_articles.rb
class CreateArticles < ActiveRecord::Migration
def self.up
create_table :articles do |table|
table.column :inventory_id, :string, :limit => 10 #numero di inventario
table.column :invoice_id, :integer #id della fattura
table.column :category, :string, :limit => 20, :null => false, :default => ""
table.column :vendor, :string, :limit => 20, :null => false, :default => "" #marca
table.column :model, :string, :limit => 30, :null => false, :default => "" #modello
table.column :serial, :string, :limit => 30, :default => "" #serial number
table.column :supplier_id, :integer, :null => false #fornitore
table.column :purchase_date, :date #data di acquisto
table.column :end_warranty_date, :date #fine della garanzia
table.column :note, :text #da usare per aggiungere altre informazioni
table.column :state, :string, :limit => 20, :null => false #stato dell'item
table.column :owner_id, :integer #proprietario
end
add_index :articles, :inventory_id, :unique
execute 'ALTER TABLE articles ADD CONSTRAINT fk_suppliers_id FOREIGN KEY ( supplier_id ) REFERENCES suppliers( id ) '
execute 'ALTER TABLE articles ADD CONSTRAINT fk_invoices_id FOREIGN KEY ( invoice_id ) REFERENCES invoices( id ) '
end
def self.down
drop_table :articles
end
end

Ora creiamo le tabelle nel database utilizzando il comando:
rake db:migrate

Alla prossima puntata!!!

5 commenti »

  1. […] adesso siamo pronti per cominciare. Ma, un po’ di pazienza… ci sentiamo alla prossima […]

    Pingback di Creiamo un’applicazione web con Rails - Introduzione « Max Janot Blog — 1 luglio 2008 @ 4:58 PM | Rispondi

  2. Ottimo tutorial, lo trovo completo e semplice da seguire… ho solo dovuto affrontare un problema… il mio database è Microsoft sql server 2000.

    Nel caso servisse a qualcun altro spiego come ho proceduto:
    1. ho installato le necessarie gemme
    gem install activerecord-sqlserver-adapter –source=http://gems.rubyonrails.org
    2. ho scaricato l’ultima distribuzione Ruby-DBI da: http://rubyforge.org/projects/ruby-dbi/
    ed ho copiato il file da:
    lib/dbd/ADO.rb
    a:
    ../ruby/lib/ruby/site_ruby/1.8/DBD/ADO/ADO.rb
    3. ho modificato il file config/database.yml
    development:
    adapter: sqlserver
    database: warehouse_development
    host: \
    username: sa
    password:
    test:
    adapter: sqlserver
    database: warehouse_test
    host: \
    username: sa
    password:

    production:
    adapter: sqlserver
    database: warehouse_production
    host: \
    username: sa
    password:

    Commento di Michele — 8 luglio 2008 @ 2:14 PM | Rispondi

  3. Ops… mi sono accorto che il web mi ha ‘segato’ la riga host che va copilata con il nome del server \ l’eventuale istanza

    ciao ciao

    Commento di Michele — 8 luglio 2008 @ 2:16 PM | Rispondi

  4. Grazie mille per le informazioni Michele.
    La cosa veramente interessante di Rails è il poter cambiare il dbms in maniera molto rapida e veloce.
    Addirittura si può pensare di utilizzare diversi dbms in development ed in produzione senza cambiare una singola riga di codice.

    Commento di maxjanot — 8 luglio 2008 @ 7:29 PM | Rispondi

  5. Brilliant!

    Commento di Renterydraste — 3 agosto 2008 @ 4:59 am | Rispondi


RSS feed for comments on this post. TrackBack URI

Lascia un commento

Blog su WordPress.com.