朝練メモ
chapter 5 で user な controller は作成したので chapter 6 では model を作るのかどうなのか。流して読みつつとりあえず以下とのこと。
$ git checkout master $ git checkout -b modeling-users
で、書いてあることをなんとなく読みつつ以下とのこと。
$ rails generate model User name:string email:string invoke active_record create db/migrate/20110913233346_create_users.rb create app/models/user.rb invoke rspec create spec/models/user_spec.rb $
作成されたナニの中身を見てみます。
$ cat app/models/user.rb class User < ActiveRecord::Base end $ cat db/migrate/20110913233346_create_users.rb class CreateUsers < ActiveRecord::Migration def self.up create_table :users do |t| t.string :name t.string :email t.timestamps end end def self.down drop_table :users end end $
コマンドに渡した属性な情報は db/migrate のためだったのかな。
次に Gemfile を以下に、との指示がナニ。
group :development do gem 'rspec-rails', '2.6.1' gem 'annotate', '2.4.0' end
で、Gemfile を上書き保存して bundle install して
$ bundle install Fetching source index for http://rubygems.org/ //snip Installing annotate (2.4.0) //snip $
annotate を exec しなさいとのこと。
$ bundle exec annotate --position before Unable to annotate user.rb: #<ActiveRecord::StatementInvalid: Could not find table 'users'> Nothing annotated. $
あ、db:migrate してない。
$ bundle exec rake db:migrate == CreateUsers: migrating ==================================================== -- create_table(:users) -> 0.0018s == CreateUsers: migrated (0.0019s) =========================================== $
で、リトライ。
$ bundle exec annotate --position before Annotated (1): User $
以下な形になりました。
$ cat app/models/user.rb # == Schema Information # # Table name: users # # id :integer not null, primary key # name :string(255) # email :string(255) # created_at :datetime # updated_at :datetime # class User < ActiveRecord::Base end $
あとは attr_accessible メソドの呼び出しを追加ですか。
class User < ActiveRecord::Base attr_accessible :name, :email end
で、コンソールから model 作成して云々してますが、ここではスルー。
6.2 User validations
どこまでイケるのか。てか、いきなり出てきた以下が意味不明。
$ bundle exec rake db:test:prepare
- ちゃんと本文読まなきゃorz
- これで development な db の修正が test に反映される、のかなぁ。微妙に謎。実行してもだんまりだし。
- pending というメソド興味深い
とりあえず時間切れ。夜に対応できたら追記を予定。