I'll start off by saying I am new to Ruby and Rails...

Suppose I run the following;

$ script/generate model person


which creates:

class CreatePeople < ActiveRecord::Migration
  def self.up
    create_table :people do |t|

      t.timestamps
    end
  end

  def self.down
    drop_table :people
  end
end


I added in some code (the author instructs me to) such that it now
reads:

class CreatePeople < ActiveRecord::Migration
  def self.up
    create_table :people do |t|
      t.string :name, :type, :email, :camera #ADDED IN
      t.timestamps
    end
  end

  def self.down
    drop_table :people
  end
end

I do not understand, at a ruby level, what is going on.  It appears I
have a class (static) method called up.  The first thing I am doing is
calling Migration's create_table method.  This leads to question 1:

1:) Migration does not have create_table method.  How is Ruby finding
create_table?

Now the create_table method appears to accept two parameters.  The first
being a symbol, and the second being a code block.

I am assuming that the only thing obtainable from this code block is the
last line t.timestamps, as the last line is returned in ruby.

So question number two:

2:  What does this line even do?
t.string :name, :type, :email, :camera #ADDED IN

What is t being passed in?  why no comma between t.string and :name.


And my final question...

How come I cannot write the code as follows (Aptana will not compile
it)?
  def self.up
    create_table (:people,{|t|
      t.string :name, :type, :email, :camera
      t.timestamps
    })
  end


BTW as I hunt I do see this in Migration:

def method_missing(method, *arguments, &block)

It is taunting me.

Feel free to respond to me like I am four.  You could try to insult me
but you would fail :-)

Thanks,

Cris
-- 
Posted via http://www.ruby-forum.com/.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com
To unsubscribe from this group, send email to 
rubyonrails-talk+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to