プロジェクト

全般

プロフィール

ScaffoldPlusAnswerThree » 履歴 » バージョン 8

Yuumi Yoshida, 2008-07-13 17:40

1 7 Yuumi Yoshida
h1. 演習3解答例
2
3
4
5
h2. 作業手順
6
7
<pre>
8 1 Yuumi Yoshida
ruby script/generate model user name:string user_id:integer
9 8 Yuumi Yoshida
ruby script/generate migration AddUserIdToTodo user_id:integer
10 1 Yuumi Yoshida
rake db:migrate
11 5 Yuumi Yoshida
ruby script/console      # usersデータの作成,todos.user_id更新
12 6 Yuumi Yoshida
  User.new(:id=>1, :name=>'山田')
13
  u.save
14
  u = User.new(:id=>2, :name=>'川田')
15 1 Yuumi Yoshida
  u.save
16
  Todo.update_all("user_id=1")
17
  User.find(:all)       # users の確認
18
  Todo.find(:all)      # todos の確認
19
  quit
20 7 Yuumi Yoshida
</pre>
21 1 Yuumi Yoshida
22
23 7 Yuumi Yoshida
h2. 変更点
24
25
26
27
h3. 1.  app/models/user.rb
28 1 Yuumi Yoshida
29
Todoとの一対多の関連を記述
30 8 Yuumi Yoshida
<pre><code class="color">
31
class User < ActiveRecord::Base
32
  ##(has_many :todos)##
33 1 Yuumi Yoshida
end
34 8 Yuumi Yoshida
</code></pre>
35 1 Yuumi Yoshida
36
37
h3. 2.  app/models/todo.rb
38 7 Yuumi Yoshida
39 1 Yuumi Yoshida
Userとの多対一の関連(従属)を記述
40 8 Yuumi Yoshida
<pre><code class="color">
41
class Todo < ActiveRecord::Base
42
  ##(belongs_to :user)##
43 2 Yuumi Yoshida
end
44 8 Yuumi Yoshida
</code></pre>
45 2 Yuumi Yoshida
46 7 Yuumi Yoshida
47
h3. 3. app/views/todos/index.html.erb
48
49 1 Yuumi Yoshida
user.nameカラム表示用のコードを追加
50 8 Yuumi Yoshida
<pre><code class="color">
51
<h1>Listing todos</h1>
52 3 Yuumi Yoshida
53 8 Yuumi Yoshida
<table>
54
  <tr>
55
    <th>Due</th>
56
    ##(<th>Name</th>)##
57
    <th>Task</th>
58
  </tr>
59 1 Yuumi Yoshida
60 8 Yuumi Yoshida
<%25 for todo in @todos %25>
61
  <tr>
62
    <td><%25=h todo.due %25></td>
63
    ##(<td><%25=h todo.user.name %25></td>)##
64
    <td><%25=h todo.task %25></td>
65
    <td><%25= link_to 'Show', todo %25></td>
66
    <td><%25= link_to 'Edit', edit_todo_path(todo) %25></td>
67
    <td><%25= link_to 'Destroy', todo, :confirm => 'Are you sure?', :method => :delete %25></td>
68
  </tr>
69
<%25 end %25>
70
</table>
71 1 Yuumi Yoshida
72 8 Yuumi Yoshida
<br />
73 1 Yuumi Yoshida
74 8 Yuumi Yoshida
<%25= link_to 'New todo', new_todo_path %25>
75
</code></pre>
76 1 Yuumi Yoshida
77 3 Yuumi Yoshida
78
h3. 4. app/views/todos/show.html.erb
79
80
user.nameカラム表示用のコードを追加
81 8 Yuumi Yoshida
<pre><code class="color">
82
</code></pre>
83 3 Yuumi Yoshida
84
85
h3. 5. app/views/todos/edit.html.erb
86 1 Yuumi Yoshida
87 3 Yuumi Yoshida
user.name入力表示用のコードを追加
88 8 Yuumi Yoshida
<pre><code class="color">
89
</code></pre>
90 3 Yuumi Yoshida
91 1 Yuumi Yoshida
92 3 Yuumi Yoshida
93
h3. 6. app/views/todos/new.html.erb
94
95
user.name入力表示用のコードを追加
96 8 Yuumi Yoshida
<pre><code class="color">
97
</code></pre>
98 3 Yuumi Yoshida
99 7 Yuumi Yoshida
100
h2. ソースコード 
101
102 4 Yuumi Yoshida
103
 解答例のソースコードは http://www.ey-office.com/trac/rails/browser/tags/todo_q3で参照できます。