Rails 3.0 Todo アプリの場合、 Statusフィールドを持つ Tasks モデルがあります。Status フィールド データ (フィールド タイプ) を保存し、ビュー (HTML テーブル) に人間が読めるバージョンを表示する最良の方法は何ですか? ステータスは次のとおりです。
0 = 通常
1 = アクティブ
2 = 完了
今私はこれを持っています:
Rails スキーマは次のとおりです。
create_table "タスク", :force => true do |t|
t.integer "ステータス", :limit => 1, :default => 0, :null => false
Railsモデルはこちら:
class Task < ActiveRecord::Base
validates_inclusion_of :status, :in => 0..2,
:message => "{{value}} must be 0, 1, or 2"
Railsビューはこちら:
<h1>Listing tasks</h1>
<table>
<tr>
<th>Status</th>
<th>Name</th>
<th></th>
<th></th>
<th></th>
</tr>
<% @tasks.each do |task| %>
<tr>
<td><%= task.status %></td>
<td><%= task.name %></td>
<td><%= link_to 'Show', task %></td>
<td><%= link_to 'Edit', edit_task_path(task) %></td>
<td><%= link_to 'Delete', task, :confirm => 'Are you sure?', :method => :delete %></td>
</tr>
<% end %>
</table>
要件
値を簡単にローカライズできるように、タスクのステータスをデータベースに保存します。つまり、「通常」、「アクティブ」、「完了」を文字列フィールドとして保存するかどうかわかりません。
ソリューションは Rails 3.0 で動作する必要があります。
質問:
フィールドを整数として保存する必要がありますか (上記を参照)。もしそうなら、RailsビューのHTMLテーブルに人間が読める正しいステータスを表示するにはどうすればよいですか。たとえば、HTMLテーブルに「1」ではなく「Active」を表示します。
列挙型を使用する必要がありますか? もしそうなら、これは後で簡単にローカライズできますか?
「Normal」、「Active」、「Completed」などのストレート文字列を使用する必要がありますか
これを機能させるためのビュー ヘルパー、コントローラー、またはビュー コードの簡単なコード サンプルを提供できますか?