desenvolvimento web com ruby on rails (parte 5)

Download Desenvolvimento web com Ruby on Rails (parte 5)

If you can't read please download the document

Upload: joao-lucas-santana

Post on 10-May-2015

321 views

Category:

Technology


1 download

TRANSCRIPT

  • 1.Desenvolvimento Web com Ruby on Rails Joo Lucas Pereira de Santana gtalk | linkedin | twitter: jlucasps

2. Migration bills @jlucasps jlucasps@lotus:/media/truecrypt1/handsonrails/first_app$ rails g migration CreateBills invoke active_record create db/migrate/20130618074102_create_bills.rb class CreateBills < ActiveRecord::Migration def change create_table :bills do |t| t.column :name, :string, :null => false t.column :description, :string t.references :user, :foreign_key => true t.column :date, :datetime, :null => false t.column :value, :decimal t.timestamps end end end Criar arquivo de migration e execut-lo 3. Migration bills @jlucasps jlucasps@lotus:/media/truecrypt1/handsonrails/first_app$ rake db:migrate == CreateBills: migrating =============================================== ===== -- create_table(:bills) -> 0.0073s -- add_index(:bills, :user_id) -> 0.0005s == CreateBills: migrated (0.0080s) =========================================== jlucasps@lotus:/media/truecrypt1/handsonrails/first_app$ rake db:rollback == CreateBills: reverting =============================================== ===== -- remove_index("bills", {:column=>:user_id}) -> 0.0082s -- drop_table("bills") -> 0.0003s == CreateBills: reverted (0.0088s) =========================================== 4. Migration bills @jlucasps jlucasps@lotus:/media/truecrypt1/handsonrails/first_app$ rails g migration AddIndexToBills invoke active_record create db/migrate/20130618080649_add_index_to_bills.rb class AddIndexToBills < ActiveRecord::Migration def change add_index :bills, :user_id end end Adicionar ndice foreign_key user_id da tabela bills 5. Migration bills @jlucasps jlucasps@lotus:/media/truecrypt1/handsonrails/first_app$ rake db:migrate == AddIndexToBills: migrating ================================================ -- add_index(:bills, :user_id) -> 0.0013s == AddIndexToBills: migrated (0.0015s) ======================================= jlucasps@lotus:/media/truecrypt1/handsonrails/first_app$ rake db:rollback == AddIndexToBills: reverting ================================================ -- remove_index("bills", {:column=>:user_id}) -> 0.0306s == AddIndexToBills: reverted (0.0307s) ======================================= 6. Model Bill @jlucasps class Bill < ActiveRecord::Base # Attrs accessible attr_accessible :name, :description, :user_id, :date, :value # Validations validates :name, :presence => true, :allow_blank => false validates :user_id, :presence => true validates :date, :presence => true validates :value, :presence => true # Associations belongs_to :user # Scopes default_scope order("bills.date DESC") # Pblic methods end 7. Model User Alterar o model User para conter a associao com Bill @jlucasps class User < ActiveRecord::Base # Attrs accessible attr_accessible :name, :email, :age, :gender # Constants MALE = 1 FEMALE = 2 OTHER = 3 # Validations validates :name, :presence => true, :allow_blank => false validates :email, :presence => true, :allow_blank => false validates_uniqueness_of :email validates :gender, :presence => true, :if => :adulthood # Associations has_many :bills, :dependent => :destroy # Scopes # Pblic methods def adulthood self.age.present? and age >= 18 end end 8. Rails console @jlucasps jlucasps@lotus:/media/truecrypt1/handsonrails/first_app$ rails console Loading development environment (Rails 3.2.13) irb(main):001:0> user = User.new(:name => "Joao Lucas", :email => "[email protected]") => # irb(main):002:0> user.save (0.1ms) begin transaction User Exists (0.2ms) SELECT 1 AS one FROM "users" WHERE "users"."email" = '[email protected]' LIMIT 1 SQL (24.1ms) INSERT INTO "users" ("age", "created_at", "email", "gender", "name", "updated_at") VALUES (?, ?, ?, ?, ?, ?) [["age", nil], ["created_at", Tue, 18 Jun 2013 12:52:30 UTC +00:00], ["email", "[email protected]"], ["gender", nil], ["name", "Joao Lucas"], ["updated_at", Tue, 18 Jun 2013 12:52: 30 UTC +00:00]] (422.3ms) commit transaction => true irb(main):003:0> Criar um usurio utilizando o $ rails console 9. Rails console Criar 2 objetos Bill e associ-los a um usurio. @jlucasps irb(main):004:0> bill_1 = Bill.new :name => "Conta 1", :date => Time. utc(2012, 06, 18), :value => 48.90 => #, created_at: nil, updated_at: nil> irb(main):012:0> bill_1.user = user => # irb(main):013:0> bill_1.save (0.1ms) begin transaction SQL (7.7ms) INSERT INTO "bills" ("created_at", "date", "description", "name", "updated_at", "user_id", "value") VALUES (?, ?, ?, ?, ?, ?, ?) [["created_at", Tue, 18 Jun 2013 13:03:13 UTC +00:00], ["date", Mon, 18 Jun 2012 00:00:00 UTC +00:00], ["description", nil], ["name", "Conta 1"], ["updated_at", Tue, 18 Jun 2013 13:03:13 UTC +00:00], ["user_id", 7], ["value", #