このようなモデル:
create_table "user_accounts", :force => true do |t|
t.string "code"
t.string "user_name"
t.integer "user_type", :default => 1
end
次のようなコントローラーのコード:
def index
@user_accounts = UserAccount.all
respond_to do |format|
format.html # index.html.erb
format.json { render :json => @user_accounts }
format.xml { render :xml => @user_accounts }
end
end
ビューのコードは次のようになります。
<table>
<tr>
<th><%= t :code %></th>
<th><%= t :user_name %></th>
<th><%= t :user_type %></th>
<th></th>
<th></th>
<th></th>
</tr>
<% @user_accounts.each do |user_account| %>
<tr class="<%= cycle('list_line_odd', 'list_line_even') %>">
<td><%= user_account.code %></td>
<td><%= user_account.user_name %></td>
<td><%= user_account.user_type %></td>
<td><%= link_to 'Show', user_account %></td>
<td><%= link_to 'Edit', edit_user_account_path(user_account) %></td>
<td><%= link_to 'Destroy', user_account, :confirm => 'Are you sure?', :method => :delete %></td>
</tr>
<% end %>
</table>
すべて正常に動作します。ただし、「user_type」が数値として表示されるという欠陥があります。しかし、「通常のユーザー」や「システム管理者」のような文字列として表示できることを願っています。
ビュー(index.html.erb)にロジックを追加したくない最も重要なこと。
だから私が必要とするのは、コントローラーまたはどこでも user_type の値を変更することです。
それを行うエレガントな方法がいくつかあるはずです。しかし、私にはわかりません。皆さんが私にいくつかの提案をしてくれることを願っています。ありがとう!