chee@ibm4linux:~/workspace/crm4test$ script/generate model
Usage: script/generate model ModelName [field:type, field:type]
Options:
--skip-timestamps Don't add timestamps to the migration file for this model
--skip-migration Don't generate a migration file for this model
--skip-fixture Don't generation a fixture file for this model
Rails Info:
-v, --version Show the Rails version number and quit.
-h, --help Show this help message and quit.
General Options:
-p, --pretend Run but do not make any changes.
-f, --force Overwrite files that already exist.
-s, --skip Skip files that already exist.
-q, --quiet Suppress normal output.
-t, --backtrace Debugging: show backtrace on errors.
-c, --svn Modify files with subversion. (Note: svn must be in path)
-g, --git Modify files with git. (Note: git must be in path)
Description:
Stubs out a new model. Pass the model name, either CamelCased or
under_scored, and an optional list of attribute pairs as arguments.
Attribute pairs are column_name:sql_type arguments specifying the
model's attributes. Timestamps are added by default, so you don't have to
specify them by hand as 'created_at:datetime updated_at:datetime'.
You don't have to think up every attribute up front, but it helps to
sketch out a few so you can start working with the model immediately.
This generates a model class in app/models, a unit test in test/unit,
a test fixture in test/fixtures/singular_name.yml, and a migration in
db/migrate.
Examples:
`./script/generate model account`
creates an Account model, test, fixture, and migration:
Model: app/models/account.rb
Test: test/unit/account_test.rb
Fixtures: test/fixtures/accounts.yml
Migration: db/migrate/XXX_add_accounts.rb
`./script/generate model post title:string body:text published:boolean`
creates a Post model with a string title, text body, and published flag.
Chee Chong Hwa aka CCH, a Malaysian Chief Software Architect blogs on his experiences with Ruby on Rail running on Win2003 Server+Apache 2.26 environment since 2007. Flirted briefly with Ubuntu 9.04 in 2009. Since January 2017, now using RubyMine IDE/Notepad++ to work with Ruby 2.26 +Rails 5.01+Apache 2.4.23 + MySQL 5.7.14 on Windows 10 64-bits.
Showing posts with label Models. Show all posts
Showing posts with label Models. Show all posts
Wednesday, September 2, 2009
Saturday, August 29, 2009
Rails Basics : What is a Model ?
What is a Model ?
The Model is the 'M' in the MVC (Model/Views/Controller) concept integral to a Rails application.
Models should :-
Conventions for Models
Model classes in Rails are all inherited from the ActiveRecord base class ActiveRecord::Base and map one-to-one to a table in your database.
Residing in the app/models directory, Models should following the following convention :-
More to come...
The Model is the 'M' in the MVC (Model/Views/Controller) concept integral to a Rails application.
Models should :-
- Constitute most of your application codes.
- Provide a persistent storage mechanism to your database
- Define all business logic
Conventions for Models
Model classes in Rails are all inherited from the ActiveRecord base class ActiveRecord::Base and map one-to-one to a table in your database.
Residing in the app/models directory, Models should following the following convention :-
- Only one class per file
- Class name should be singular and camel-cased eg.Customer or BillNo
- Corresponding table name should be lowercased, plural and underscored eg. customers or bill_nos
- Corresponding table must have an auto-incrementing integer field called id
- Column names shoudl also be lowercased
- Model filename should be lowercased and underscored version of the class name eg. customer.rb or bill_no.rb
- has_many represents a zero-to-many relationship between the Parent & Child Class
- belongs_to is the reciprocal child method to parent has_many method
- has_one is like a belongs_to and represents a one-to-one relationship in your database
More to come...
Friday, August 28, 2009
Rails Basics : What is a Controller ?
What is a Controller ?
The Controller is an integral component of the MVC (Model/View/Controller) concept that is central to Rails. Controllers are normal Ruby classes that inherit from ActionController:Base or more frequently the generated ApplicationController Class
Controllers have public action methods that can be called from the dispatcher as well as their own protected and private methods. Typically, action methods follow this pattern :-
As such, you should remove all Business Logic from your Controllers and put in the corresponding Model.
So what does the Controllers in your Rails application do ?
Well, your controllers are only responsible for mapping between URLs, co-ordinating with your Models and your Views and channeling back to a HTTP response. In addition, it may do Access Control as well.
Basically, when someone connects to your Rails Application via an URL, they are ly asking your Application to execute a Controller Action. Typically, action methods follow this pattern :-
As you may be aware, Rails works magically so long as you adhere to the all important concepl of Convention over Configuration. In this respect Controller Conventions include :-
a) The Controller's class name should be camel cased and pluralised and be followed by the word controller. eg.CustomersControllers or BillNosControllers
b) Similar to Models, the controller filename should be lowercased and underscored versions of the class name. eg. customers_controllers.rb or bill_nos_controllers.rb
c) An action is a Public Method of a controller class. For example
What is fascinating is that unless explicitly told to do , Rails will render the views with the same name as the actions!
How to remove a controller and all previously generated files ?
chee@ibm4linux:~/workspace/crm2009$ script/destroy controller concepts
rm test/unit/helpers/concepts_helper_test.rb
rm app/helpers/concepts_helper.rb
rm test/functional/concepts_controller_test.rb
rm app/controllers/concepts_controller.rb
notempty test/unit/helpers
notempty test/unit
notempty test
notempty test/functional
notempty test
rmdir app/views/concepts
notempty app/views
notempty app
notempty app/helpers
notempty app
notempty app/controllers
notempty app
chee@ibm4linux:~/workspace/crm2009$
The Controller is an integral component of the MVC (Model/View/Controller) concept that is central to Rails. Controllers are normal Ruby classes that inherit from ActionController:Base or more frequently the generated ApplicationController Class
Controllers have public action methods that can be called from the dispatcher as well as their own protected and private methods. Typically, action methods follow this pattern :-
- Manipulate the domain model in some way
- Refers to the response format requested by the user
- Generate a response in the correct form by rendering a view template
script/generate controller Concepts
exists app/controllers/
exists app/helpers/
create app/views/concepts
exists test/functional/
exists test/unit/helpers/
create app/controllers/concepts_controller.rb
create test/functional/concepts_controller_test.rb
create app/helpers/concepts_helper.rb
create test/unit/helpers/concepts_helper_test.rb
As such, you should remove all Business Logic from your Controllers and put in the corresponding Model.
So what does the Controllers in your Rails application do ?
Well, your controllers are only responsible for mapping between URLs, co-ordinating with your Models and your Views and channeling back to a HTTP response. In addition, it may do Access Control as well.
Basically, when someone connects to your Rails Application via an URL, they are ly asking your Application to execute a Controller Action. Typically, action methods follow this pattern :-
- Interact with the domain model in some way such as selecting, inserting or updating data based on incoming parameters or using one or more classes form the app/model directory
- Generate a response by rendering a view template with the same name as the action method
As you may be aware, Rails works magically so long as you adhere to the all important concepl of Convention over Configuration. In this respect Controller Conventions include :-
a) The Controller's class name should be camel cased and pluralised and be followed by the word controller. eg.CustomersControllers or BillNosControllers
b) Similar to Models, the controller filename should be lowercased and underscored versions of the class name. eg. customers_controllers.rb or bill_nos_controllers.rb
c) An action is a Public Method of a controller class. For example
- index
- show
- new
- create
- edit
- update
- destroy
What is fascinating is that unless explicitly told to do , Rails will render the views with the same name as the actions!
How to remove a controller and all previously generated files ?
chee@ibm4linux:~/workspace/crm2009$ script/destroy controller concepts
rm test/unit/helpers/concepts_helper_test.rb
rm app/helpers/concepts_helper.rb
rm test/functional/concepts_controller_test.rb
rm app/controllers/concepts_controller.rb
notempty test/unit/helpers
notempty test/unit
notempty test
notempty test/functional
notempty test
rmdir app/views/concepts
notempty app/views
notempty app
notempty app/helpers
notempty app
notempty app/controllers
notempty app
chee@ibm4linux:~/workspace/crm2009$
Subscribe to:
Posts (Atom)
Welcome to Rails.. Rails... Rails !
In 1995, I started the popular Clipper...Clipper... Clipper website (no blogs then) which was very popular and linked by virtually every Clipper-related site. When I switched to Windows via Delphi in 1997, I started the Delphi... Delphi... Delphi site. In June 2007, I discovered Ruby on Rails and no prize for guessing what I am gonna name this blog. which I started on 2nd October 2007.
As at 10th June 2010, we have 13,364 unique visitors from more than 84 countries such as Angola, Andorra, Argentina, Australia, Austria, Algeria,Barbados, Bosnia and Herzogovina, Belgium, Brazil, Bulgaria, Bangladesh, Belarus, Bolivia, Chile, Cambodia, Cape Vede, Canada, China, Colombia, Costa Rica, Croatia, Cyprus, Czech Republic, Denmark, Egypt, Estonia, Finland, France, Guadeloupe, Guatemala, Germany, Greece, Hong Kong, Hungary, India, Indonesia, Ireland, Israel, Italy, Japan, Kenya, Korea, Lithuania, Latvia, Malaysia, Mexico, Macao, Netherlands, Nepal, Norway, New Zealand, Oman, Panama, Peru, Poland, Portugal,Paraguay , Philippines, Romania, Russian Federation, Saudi Arabia, Singapore, Spain, Slovakia, Slovenia, Serbia, South Korea, Slovenia, South Africa, Spain, Switzerland, Sri Lanka, Sweden, Taiwan, Thailand, Turkey, United Arab Emirates, Ukraine, USA, UK, Venezuela, Vietnam
CCH
10th June 2010, 19:42
As at 10th June 2010, we have 13,364 unique visitors from more than 84 countries such as Angola, Andorra, Argentina, Australia, Austria, Algeria,Barbados, Bosnia and Herzogovina, Belgium, Brazil, Bulgaria, Bangladesh, Belarus, Bolivia, Chile, Cambodia, Cape Vede, Canada, China, Colombia, Costa Rica, Croatia, Cyprus, Czech Republic, Denmark, Egypt, Estonia, Finland, France, Guadeloupe, Guatemala, Germany, Greece, Hong Kong, Hungary, India, Indonesia, Ireland, Israel, Italy, Japan, Kenya, Korea, Lithuania, Latvia, Malaysia, Mexico, Macao, Netherlands, Nepal, Norway, New Zealand, Oman, Panama, Peru, Poland, Portugal,Paraguay , Philippines, Romania, Russian Federation, Saudi Arabia, Singapore, Spain, Slovakia, Slovenia, Serbia, South Korea, Slovenia, South Africa, Spain, Switzerland, Sri Lanka, Sweden, Taiwan, Thailand, Turkey, United Arab Emirates, Ukraine, USA, UK, Venezuela, Vietnam
CCH
10th June 2010, 19:42