The Depot Application

The Depot Application

19 ActiveRecord: Relationships Between Tables 17 Migration

18 Active Record: The Basics

Ticket 3235 : Stack Traceback running irb on Linux

echo "Order.column_names" | IRBRC=tmp/irbrc rails console
Loading development environment (Rails 3.0.0.beta3)
>> Order.column_names
=> ["id", "name", "address", "email", "pay_type", "created_at", "updated_at", "customer_email", "placed_at", "attn", "order_type", "ship_class", "amount", "state"]
>> 
echo "Order.columns_hash[\"pay_type\"]" | IRBRC=tmp/irbrc rails console
Loading development environment (Rails 3.0.0.beta3)
>> Order.columns_hash["pay_type"]
=> #<ActiveRecord::ConnectionAdapters::SQLiteColumn:0xb68b601c @primary=false, @default=nil, @type=:string, @null=true, @name="pay_type", @limit=10, @sql_type="varchar(10)", @scale=nil, @precision=nil>
>> 
sqlite3> select * from orders limit 1
            id = 1
          name = Dave Thomas
       address = 123 Main St
         email = customer@example.com
      pay_type = check
    created_at = 2010-06-06 14:54:35.335479
    updated_at = 2010-06-06 14:54:35.335479
customer_email = 
     placed_at = 2010-06-06 14:58:47.761494
          attn = 
    order_type = 
    ship_class = priority
        amount = 
         state = 
echo "Product.find(:first).price_before_type_cast" | IRBRC=tmp/irbrc rails console
Loading development environment (Rails 3.0.0.beta3)
>> Product.find(:first).price_before_type_cast
=> "29.95"
>> 
echo "Product.find(:first).updated_at_before_type_cast" | IRBRC=tmp/irbrc rails console
Loading development environment (Rails 3.0.0.beta3)
>> Product.find(:first).updated_at_before_type_cast
=> "2010-06-06 14:53:24.380033"
>> 
irb e1/ar/new_examples.rb
*** glibc detected *** irb: realloc(): invalid next size: 0x081e5030 ***
======= Backtrace: =========
/lib/tls/i686/cmov/libc.so.6[0xb7656803]
/lib/tls/i686/cmov/libc.so.6(realloc+0x10b)[0xb765875b]
irb(ruby_xrealloc+0x56)[0x8075696]
irb(rb_str_resize+0x53)[0x80bfcc3]
irb[0x80721c7]
irb(rb_find_file_ext+0x1d2)[0x8072a32]
irb(rb_require_safe+0x12d)[0x806726d]
irb[0x8063ab6]
irb[0x8063d81]
irb[0x805ecf3]
irb[0x8067be6]
irb[0x806806b]
irb[0x8059334]
irb[0x8063ab6]
irb[0x8063d81]
irb[0x805ecf3]
irb[0x80639fc]
irb[0x8063d81]
irb[0x805ecf3]
irb[0x805ef39]
irb[0x806b95e]
irb(rb_yield+0x21)[0x806cdc1]
irb(rb_ary_each+0x31)[0x80d1c51]
irb[0x8063ab6]
irb[0x8063d81]
irb[0x8060e11]
irb[0x80618ce]
irb[0x80639fc]
irb[0x8063d81]
irb[0x805ebc6]
irb[0x80639fc]
irb[0x8063d81]
irb[0x805ebc6]
irb[0x80639fc]
irb[0x8063d81]
irb[0x805ebc6]
irb[0x80639fc]
irb[0x8063d81]
irb[0x805ebc6]
irb[0x806d630]
irb(ruby_exec+0x16)[0x806d656]
irb(ruby_run+0x21)[0x806d9a1]
irb[0x805527f]
/lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe0)[0xb75ff450]
irb[0x80551d1]
======= Memory map: ========
08048000-08102000 r-xp 00000000 08:05 754237     /home/rubys/.rvm/rubies/ruby-1.8.8-r28169/bin/ruby
08102000-08103000 rw-p 000ba000 08:05 754237     /home/rubys/.rvm/rubies/ruby-1.8.8-r28169/bin/ruby
08103000-081f8000 rw-p 08103000 00:00 0          [heap]
b7300000-b7321000 rw-p b7300000 00:00 0 
b7321000-b7400000 ---p b7321000 00:00 0 
b74d5000-b7502000 r-xp 00000000 08:05 2965573    /lib/libncurses.so.5.6
b7502000-b7505000 rw-p 0002c000 08:05 2965573    /lib/libncurses.so.5.6
b7505000-b7531000 r-xp 00000000 08:05 2965623    /lib/libreadline.so.5.2
b7531000-b7535000 rw-p 0002c000 08:05 2965623    /lib/libreadline.so.5.2
b7535000-b7536000 rw-p b7535000 00:00 0 
b7546000-b75d1000 rw-p b7546000 00:00 0 
b75d1000-b75e5000 r-xp 00000000 08:05 2998328    /lib/tls/i686/cmov/libpthread-2.7.so
b75e5000-b75e7000 rw-p 00013000 08:05 2998328    /lib/tls/i686/cmov/libpthread-2.7.so
b75e7000-b75e9000 rw-p b75e7000 00:00 0 
b75e9000-b7732000 r-xp 00000000 08:05 2998314    /lib/tls/i686/cmov/libc-2.7.so
b7732000-b7733000 r--p 00149000 08:05 2998314    /lib/tls/i686/cmov/libc-2.7.so
b7733000-b7735000 rw-p 0014a000 08:05 2998314    /lib/tls/i686/cmov/libc-2.7.so
b7735000-b7738000 rw-p b7735000 00:00 0 
b7738000-b775b000 r-xp 00000000 08:05 2998318    /lib/tls/i686/cmov/libm-2.7.so
b775b000-b775d000 rw-p 00023000 08:05 2998318    /lib/tls/i686/cmov/libm-2.7.so
b775d000-b7766000 r-xp 00000000 08:05 2998316    /lib/tls/i686/cmov/libcrypt-2.7.so
b7766000-b7768000 rw-p 00008000 08:05 2998316    /lib/tls/i686/cmov/libcrypt-2.7.so
b7768000-b7790000 rw-p b7768000 00:00 0 
b7790000-b7792000 r-xp 00000000 08:05 2998317    /lib/tls/i686/cmov/libdl-2.7.so
b7792000-b7794000 rw-p 00001000 08:05 2998317    /lib/tls/i686/cmov/libdl-2.7.so
b7794000-b779b000 r-xp 00000000 08:05 2998330    /lib/tls/i686/cmov/librt-2.7.so
b779b000-b779d000 rw-p 00006000 08:05 2998330    /lib/tls/i686/cmov/librt-2.7.so
b779d000-b77a7000 r-xp 00000000 08:05 2969156    /lib/libgcc_s.so.1
b77a7000-b77a8000 rw-p 0000a000 08:05 2969156    /lib/libgcc_s.so.1
b77a8000-b77ac000 r-xp 00000000 08:05 1098477    /home/rubys/.rvm/rubies/ruby-1.8.8-r28169/lib/ruby/1.8/i686-linux/readline.so
b77ac000-b77ad000 rw-p 00003000 08:05 1098477    /home/rubys/.rvm/rubies/ruby-1.8.8-r28169/lib/ruby/1.8/i686-linux/readline.so
b77ad000-b77af000 rw-p b77ad000 00:00 0 
b77af000-b77b0000 r-xp b77af000 00:00 0          [vdso]
b77b0000-b77ca000 r-xp 00000000 08:05 1786011    /lib/ld-2.7.so
b77ca000-b77cc000 rw-p 00019000 08:05 1786011    /lib/ld-2.7.so
bfd87000-bfd9c000 rw-p bffeb000 00:00 0          [stack]
irb e1/ar/find_examples.rb
*** glibc detected *** irb: realloc(): invalid next size: 0x081e5030 ***
======= Backtrace: =========
/lib/tls/i686/cmov/libc.so.6[0xb766e803]
/lib/tls/i686/cmov/libc.so.6(realloc+0x10b)[0xb767075b]
irb(ruby_xrealloc+0x56)[0x8075696]
irb(rb_str_resize+0x53)[0x80bfcc3]
irb[0x80721c7]
irb(rb_find_file_ext+0x1d2)[0x8072a32]
irb(rb_require_safe+0x12d)[0x806726d]
irb[0x8063ab6]
irb[0x8063d81]
irb[0x805ecf3]
irb[0x8067be6]
irb[0x806806b]
irb[0x8059334]
irb[0x8063ab6]
irb[0x8063d81]
irb[0x805ecf3]
irb[0x80639fc]
irb[0x8063d81]
irb[0x805ecf3]
irb[0x805ef39]
irb[0x806b95e]
irb(rb_yield+0x21)[0x806cdc1]
irb(rb_ary_each+0x31)[0x80d1c51]
irb[0x8063ab6]
irb[0x8063d81]
irb[0x8060e11]
irb[0x80618ce]
irb[0x80639fc]
irb[0x8063d81]
irb[0x805ebc6]
irb[0x80639fc]
irb[0x8063d81]
irb[0x805ebc6]
irb[0x80639fc]
irb[0x8063d81]
irb[0x805ebc6]
irb[0x80639fc]
irb[0x8063d81]
irb[0x805ebc6]
irb[0x806d630]
irb(ruby_exec+0x16)[0x806d656]
irb(ruby_run+0x21)[0x806d9a1]
irb[0x805527f]
/lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe0)[0xb7617450]
irb[0x80551d1]
======= Memory map: ========
08048000-08102000 r-xp 00000000 08:05 754237     /home/rubys/.rvm/rubies/ruby-1.8.8-r28169/bin/ruby
08102000-08103000 rw-p 000ba000 08:05 754237     /home/rubys/.rvm/rubies/ruby-1.8.8-r28169/bin/ruby
08103000-081f8000 rw-p 08103000 00:00 0          [heap]
b7300000-b7321000 rw-p b7300000 00:00 0 
b7321000-b7400000 ---p b7321000 00:00 0 
b74ed000-b751a000 r-xp 00000000 08:05 2965573    /lib/libncurses.so.5.6
b751a000-b751d000 rw-p 0002c000 08:05 2965573    /lib/libncurses.so.5.6
b751d000-b7549000 r-xp 00000000 08:05 2965623    /lib/libreadline.so.5.2
b7549000-b754d000 rw-p 0002c000 08:05 2965623    /lib/libreadline.so.5.2
b754d000-b754e000 rw-p b754d000 00:00 0 
b755e000-b75e9000 rw-p b755e000 00:00 0 
b75e9000-b75fd000 r-xp 00000000 08:05 2998328    /lib/tls/i686/cmov/libpthread-2.7.so
b75fd000-b75ff000 rw-p 00013000 08:05 2998328    /lib/tls/i686/cmov/libpthread-2.7.so
b75ff000-b7601000 rw-p b75ff000 00:00 0 
b7601000-b774a000 r-xp 00000000 08:05 2998314    /lib/tls/i686/cmov/libc-2.7.so
b774a000-b774b000 r--p 00149000 08:05 2998314    /lib/tls/i686/cmov/libc-2.7.so
b774b000-b774d000 rw-p 0014a000 08:05 2998314    /lib/tls/i686/cmov/libc-2.7.so
b774d000-b7750000 rw-p b774d000 00:00 0 
b7750000-b7773000 r-xp 00000000 08:05 2998318    /lib/tls/i686/cmov/libm-2.7.so
b7773000-b7775000 rw-p 00023000 08:05 2998318    /lib/tls/i686/cmov/libm-2.7.so
b7775000-b777e000 r-xp 00000000 08:05 2998316    /lib/tls/i686/cmov/libcrypt-2.7.so
b777e000-b7780000 rw-p 00008000 08:05 2998316    /lib/tls/i686/cmov/libcrypt-2.7.so
b7780000-b77a8000 rw-p b7780000 00:00 0 
b77a8000-b77aa000 r-xp 00000000 08:05 2998317    /lib/tls/i686/cmov/libdl-2.7.so
b77aa000-b77ac000 rw-p 00001000 08:05 2998317    /lib/tls/i686/cmov/libdl-2.7.so
b77ac000-b77b3000 r-xp 00000000 08:05 2998330    /lib/tls/i686/cmov/librt-2.7.so
b77b3000-b77b5000 rw-p 00006000 08:05 2998330    /lib/tls/i686/cmov/librt-2.7.so
b77b5000-b77bf000 r-xp 00000000 08:05 2969156    /lib/libgcc_s.so.1
b77bf000-b77c0000 rw-p 0000a000 08:05 2969156    /lib/libgcc_s.so.1
b77c0000-b77c4000 r-xp 00000000 08:05 1098477    /home/rubys/.rvm/rubies/ruby-1.8.8-r28169/lib/ruby/1.8/i686-linux/readline.so
b77c4000-b77c5000 rw-p 00003000 08:05 1098477    /home/rubys/.rvm/rubies/ruby-1.8.8-r28169/lib/ruby/1.8/i686-linux/readline.so
b77c5000-b77c7000 rw-p b77c5000 00:00 0 
b77c7000-b77c8000 r-xp b77c7000 00:00 0          [vdso]
b77c8000-b77e2000 r-xp 00000000 08:05 1786011    /lib/ld-2.7.so
b77e2000-b77e4000 rw-p 00019000 08:05 1786011    /lib/ld-2.7.so
bfe74000-bfe89000 rw-p bffeb000 00:00 0          [stack]
irb e1/ar/dump_serialize_table.rb
*** glibc detected *** irb: realloc(): invalid next size: 0x081e5010 ***
======= Backtrace: =========
/lib/tls/i686/cmov/libc.so.6[0xb75c6803]
/lib/tls/i686/cmov/libc.so.6(realloc+0x10b)[0xb75c875b]
irb(ruby_xrealloc+0x56)[0x8075696]
irb(rb_str_resize+0x53)[0x80bfcc3]
irb[0x80721c7]
irb(rb_find_file_ext+0x1d2)[0x8072a32]
irb(rb_require_safe+0x12d)[0x806726d]
irb[0x8063ab6]
irb[0x8063d81]
irb[0x805ecf3]
irb[0x8067be6]
irb[0x806806b]
irb[0x8059334]
irb[0x8063ab6]
irb[0x8063d81]
irb[0x805ecf3]
irb[0x80639fc]
irb[0x8063d81]
irb[0x805ecf3]
irb[0x805ef39]
irb[0x806b95e]
irb(rb_yield+0x21)[0x806cdc1]
irb(rb_ary_each+0x31)[0x80d1c51]
irb[0x8063ab6]
irb[0x8063d81]
irb[0x8060e11]
irb[0x80618ce]
irb[0x80639fc]
irb[0x8063d81]
irb[0x805ebc6]
irb[0x80639fc]
irb[0x8063d81]
irb[0x805ebc6]
irb[0x80639fc]
irb[0x8063d81]
irb[0x805ebc6]
irb[0x80639fc]
irb[0x8063d81]
irb[0x805ebc6]
irb[0x806d630]
irb(ruby_exec+0x16)[0x806d656]
irb(ruby_run+0x21)[0x806d9a1]
irb[0x805527f]
/lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe0)[0xb756f450]
irb[0x80551d1]
======= Memory map: ========
08048000-08102000 r-xp 00000000 08:05 754237     /home/rubys/.rvm/rubies/ruby-1.8.8-r28169/bin/ruby
08102000-08103000 rw-p 000ba000 08:05 754237     /home/rubys/.rvm/rubies/ruby-1.8.8-r28169/bin/ruby
08103000-081f8000 rw-p 08103000 00:00 0          [heap]
b7300000-b7321000 rw-p b7300000 00:00 0 
b7321000-b7400000 ---p b7321000 00:00 0 
b7445000-b7472000 r-xp 00000000 08:05 2965573    /lib/libncurses.so.5.6
b7472000-b7475000 rw-p 0002c000 08:05 2965573    /lib/libncurses.so.5.6
b7475000-b74a1000 r-xp 00000000 08:05 2965623    /lib/libreadline.so.5.2
b74a1000-b74a5000 rw-p 0002c000 08:05 2965623    /lib/libreadline.so.5.2
b74a5000-b74a6000 rw-p b74a5000 00:00 0 
b74b6000-b7541000 rw-p b74b6000 00:00 0 
b7541000-b7555000 r-xp 00000000 08:05 2998328    /lib/tls/i686/cmov/libpthread-2.7.so
b7555000-b7557000 rw-p 00013000 08:05 2998328    /lib/tls/i686/cmov/libpthread-2.7.so
b7557000-b7559000 rw-p b7557000 00:00 0 
b7559000-b76a2000 r-xp 00000000 08:05 2998314    /lib/tls/i686/cmov/libc-2.7.so
b76a2000-b76a3000 r--p 00149000 08:05 2998314    /lib/tls/i686/cmov/libc-2.7.so
b76a3000-b76a5000 rw-p 0014a000 08:05 2998314    /lib/tls/i686/cmov/libc-2.7.so
b76a5000-b76a8000 rw-p b76a5000 00:00 0 
b76a8000-b76cb000 r-xp 00000000 08:05 2998318    /lib/tls/i686/cmov/libm-2.7.so
b76cb000-b76cd000 rw-p 00023000 08:05 2998318    /lib/tls/i686/cmov/libm-2.7.so
b76cd000-b76d6000 r-xp 00000000 08:05 2998316    /lib/tls/i686/cmov/libcrypt-2.7.so
b76d6000-b76d8000 rw-p 00008000 08:05 2998316    /lib/tls/i686/cmov/libcrypt-2.7.so
b76d8000-b7700000 rw-p b76d8000 00:00 0 
b7700000-b7702000 r-xp 00000000 08:05 2998317    /lib/tls/i686/cmov/libdl-2.7.so
b7702000-b7704000 rw-p 00001000 08:05 2998317    /lib/tls/i686/cmov/libdl-2.7.so
b7704000-b770b000 r-xp 00000000 08:05 2998330    /lib/tls/i686/cmov/librt-2.7.so
b770b000-b770d000 rw-p 00006000 08:05 2998330    /lib/tls/i686/cmov/librt-2.7.so
b770d000-b7717000 r-xp 00000000 08:05 2969156    /lib/libgcc_s.so.1
b7717000-b7718000 rw-p 0000a000 08:05 2969156    /lib/libgcc_s.so.1
b7718000-b771c000 r-xp 00000000 08:05 1098477    /home/rubys/.rvm/rubies/ruby-1.8.8-r28169/lib/ruby/1.8/i686-linux/readline.so
b771c000-b771d000 rw-p 00003000 08:05 1098477    /home/rubys/.rvm/rubies/ruby-1.8.8-r28169/lib/ruby/1.8/i686-linux/readline.so
b771d000-b771f000 rw-p b771d000 00:00 0 
b771f000-b7720000 r-xp b771f000 00:00 0          [vdso]
b7720000-b773a000 r-xp 00000000 08:05 1786011    /lib/ld-2.7.so
b773a000-b773c000 rw-p 00019000 08:05 1786011    /lib/ld-2.7.so
bfc8b000-bfca0000 rw-p bffeb000 00:00 0          [stack]
irb e1/ar/aggregation.rb
*** glibc detected *** irb: realloc(): invalid next size: 0x081e5008 ***
======= Backtrace: =========
/lib/tls/i686/cmov/libc.so.6[0xb759e803]
/lib/tls/i686/cmov/libc.so.6(realloc+0x10b)[0xb75a075b]
irb(ruby_xrealloc+0x56)[0x8075696]
irb(rb_str_resize+0x53)[0x80bfcc3]
irb[0x80721c7]
irb(rb_find_file_ext+0x1d2)[0x8072a32]
irb(rb_require_safe+0x12d)[0x806726d]
irb[0x8063ab6]
irb[0x8063d81]
irb[0x805ecf3]
irb[0x8067be6]
irb[0x806806b]
irb[0x8059334]
irb[0x8063ab6]
irb[0x8063d81]
irb[0x805ecf3]
irb[0x80639fc]
irb[0x8063d81]
irb[0x805ecf3]
irb[0x805ef39]
irb[0x806b95e]
irb(rb_yield+0x21)[0x806cdc1]
irb(rb_ary_each+0x31)[0x80d1c51]
irb[0x8063ab6]
irb[0x8063d81]
irb[0x8060e11]
irb[0x80618ce]
irb[0x80639fc]
irb[0x8063d81]
irb[0x805ebc6]
irb[0x80639fc]
irb[0x8063d81]
irb[0x805ebc6]
irb[0x80639fc]
irb[0x8063d81]
irb[0x805ebc6]
irb[0x80639fc]
irb[0x8063d81]
irb[0x805ebc6]
irb[0x806d630]
irb(ruby_exec+0x16)[0x806d656]
irb(ruby_run+0x21)[0x806d9a1]
irb[0x805527f]
/lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe0)[0xb7547450]
irb[0x80551d1]
======= Memory map: ========
08048000-08102000 r-xp 00000000 08:05 754237     /home/rubys/.rvm/rubies/ruby-1.8.8-r28169/bin/ruby
08102000-08103000 rw-p 000ba000 08:05 754237     /home/rubys/.rvm/rubies/ruby-1.8.8-r28169/bin/ruby
08103000-081f8000 rw-p 08103000 00:00 0          [heap]
b7300000-b7321000 rw-p b7300000 00:00 0 
b7321000-b7400000 ---p b7321000 00:00 0 
b741d000-b744a000 r-xp 00000000 08:05 2965573    /lib/libncurses.so.5.6
b744a000-b744d000 rw-p 0002c000 08:05 2965573    /lib/libncurses.so.5.6
b744d000-b7479000 r-xp 00000000 08:05 2965623    /lib/libreadline.so.5.2
b7479000-b747d000 rw-p 0002c000 08:05 2965623    /lib/libreadline.so.5.2
b747d000-b747e000 rw-p b747d000 00:00 0 
b748e000-b7519000 rw-p b748e000 00:00 0 
b7519000-b752d000 r-xp 00000000 08:05 2998328    /lib/tls/i686/cmov/libpthread-2.7.so
b752d000-b752f000 rw-p 00013000 08:05 2998328    /lib/tls/i686/cmov/libpthread-2.7.so
b752f000-b7531000 rw-p b752f000 00:00 0 
b7531000-b767a000 r-xp 00000000 08:05 2998314    /lib/tls/i686/cmov/libc-2.7.so
b767a000-b767b000 r--p 00149000 08:05 2998314    /lib/tls/i686/cmov/libc-2.7.so
b767b000-b767d000 rw-p 0014a000 08:05 2998314    /lib/tls/i686/cmov/libc-2.7.so
b767d000-b7680000 rw-p b767d000 00:00 0 
b7680000-b76a3000 r-xp 00000000 08:05 2998318    /lib/tls/i686/cmov/libm-2.7.so
b76a3000-b76a5000 rw-p 00023000 08:05 2998318    /lib/tls/i686/cmov/libm-2.7.so
b76a5000-b76ae000 r-xp 00000000 08:05 2998316    /lib/tls/i686/cmov/libcrypt-2.7.so
b76ae000-b76b0000 rw-p 00008000 08:05 2998316    /lib/tls/i686/cmov/libcrypt-2.7.so
b76b0000-b76d8000 rw-p b76b0000 00:00 0 
b76d8000-b76da000 r-xp 00000000 08:05 2998317    /lib/tls/i686/cmov/libdl-2.7.so
b76da000-b76dc000 rw-p 00001000 08:05 2998317    /lib/tls/i686/cmov/libdl-2.7.so
b76dc000-b76e3000 r-xp 00000000 08:05 2998330    /lib/tls/i686/cmov/librt-2.7.so
b76e3000-b76e5000 rw-p 00006000 08:05 2998330    /lib/tls/i686/cmov/librt-2.7.so
b76e5000-b76ef000 r-xp 00000000 08:05 2969156    /lib/libgcc_s.so.1
b76ef000-b76f0000 rw-p 0000a000 08:05 2969156    /lib/libgcc_s.so.1
b76f0000-b76f4000 r-xp 00000000 08:05 1098477    /home/rubys/.rvm/rubies/ruby-1.8.8-r28169/lib/ruby/1.8/i686-linux/readline.so
b76f4000-b76f5000 rw-p 00003000 08:05 1098477    /home/rubys/.rvm/rubies/ruby-1.8.8-r28169/lib/ruby/1.8/i686-linux/readline.so
b76f5000-b76f7000 rw-p b76f5000 00:00 0 
b76f7000-b76f8000 r-xp b76f7000 00:00 0          [vdso]
b76f8000-b7712000 r-xp 00000000 08:05 1786011    /lib/ld-2.7.so
b7712000-b7714000 rw-p 00019000 08:05 1786011    /lib/ld-2.7.so
bfe3e000-bfe53000 rw-p bffeb000 00:00 0          [stack]

19 ActiveRecord: Relationships Between Tables 17 Migration