Professional Documents
Culture Documents
Naming Conventions: Variables: all lowercase and words separated by underscores (order_status) Classes and Modules: each word in a phrase is capitalized (LineItem) Database: all lowercase words separated by underscores. Table names are plural (line_items) Files: all lowercase with underscores Model Naming: Table File Class Controller Naming: URL File Class Method Layout View Naming: URL File Helper File Class Name Order TaxAgency Batch Diagnosis LineItem Person Datum Quantity http:///store/list app/views/store/list.html.erb (or .builder or .rjs) module StoreHelper app/helpers/store_helper.rb Table Name Orders Tax_agencies Batches Diagnoses Line_items People Data quantities http:///store/list app/controllers/store_controller.rb StoreController list app/views/layouts/store.html.erb line_items app/models/line_item.rb LineItem
$ rails generate/g model NAME [field:type field:type] $ rails generate/g scaffold NAME [field:type field:type] $ rails generate mailer NAME [method method] $ rails destroy controller $ rails destroy model $ rails destroy scaffold $ rails destroy migration
$ rails generate/g migration NAME [field:type field:type]# Generates new Migration # Stubs out a new mailer & views # Undo last controller code generated with generate # Undo last model code generated with generate # Undo last scaffold code generated with generate # Undo last migration code generated with generate # Runs ruby code in the specified file
$ rails destroy mailer # Undo last mailer code generated with generate $ rails runner script/file_name.rb
rake db:create Create the database defined in config/database.yml for the current
$ rake test:uncommitted
$ rake tmp:clear Clear session, cache, and socket files from tmp/
$ rake db:test:purge # Empty the test database. rake log:clear Truncates all *.log files in log/ to zero bytes rake rails:freeze:gems Lock this application to the current gems (by unpacking them into vendor/rails) New Project $ rails new APP_NAME d mysql $ cd APP_NAME $ bundle install $ rake db:create $ rails server Rails console $ rails console $ irb Sqlite3 database $ sqlite3 db/development .schema SELECT * FROM users
Routing
URL: http://www.example.com/controller/action/id resources :photos creates 7 different routes in your application, all mapping to the Photos controller: Verb GET GET POST GET GET PUT DELETE Path /photos /photos/new /photos /photos/:id /photos/:id/edit /photos/:id /photos/:id Action index new create show edit update destroy Helper photos_path new_photo_path photos_path photo_path(id) edit_photo_path(id) photo_path(id) photo_path(id) used for display a list of all photos return an HTML form for creating a new photo create a new photo display a specific photo return an HTML form for editing a photo update a specific photo delete a specific photo
Creating New Record Save() a_user = User.new a_user.name = Joe a_user.email = joe@example.com a_user.save Create() a_user = User.create ( :name => Joe, :email => joe@example.com ) Create() both instantiates the model object and stores it into the database
Where clause: user = User.where(name = :name and email = :email, {:name => params[:name], :email => params[:email]}) user = User.where(name like ?, params[:name] + %) users = User.where(name like ?, params[:name] + %).order(id desc) users = User.where(name like ?, params[:name] + %).order(id desc).limit(10) users = User.where(name like ?, params[:name] + %).order(id desc).limit(10).offset(5) user = User.select(name, email).where(name like ?, params[:name] + %)
Column Statistics average = Order.average(:amount) max = Order.maximum(:amount) min = Order.minimum(:amount) total = Order.sum(:amount) number = Order.count orders = Order.where(amount > 10).minimum(:amount)
Named Scopes class Order < ActiveRecord::Base scope :last_n_days, lambda { |days| where(updated < ?, days) } scope :checks, where(:pay_type => :check) end orders = Order.checks.last_n_days(7)