2012年1月7日土曜日

久々更新 区分値から区分名の表示変換

師走の忙しさから年末年始の遅番(21:00から翌11:00とか)の多忙さがあり、
またPMPの受験が差し迫っている今日この頃、久々の更新。






















ユーザ名・場所・分類のの所がNO表示になっている。
今回は、この場所の所を区分名表示に切り替えようと思う。

・前提として以下のエンティティ定義がある。
作品基本トラン:tphotobsc
場所マスタ:mplace

1.場所マスタのmodelを以下のように改修。

class Mplace < ActiveRecord::Base
    has_many :tphotobscs(作品トランを複数持つ。エンティティ名+s)
end

2.作品基本トランのmodelを以下のように改修。
class Tphotobsc < ActiveRecord::Base
    belongs_to :mplace(場所マスタを1つ持つ。エンティティ名のみ)
end

3.該当するViewを改修。(抜粋)
  <% @bscall.each do |bscall| %>
  <tr>
    <td><%= bscall.id %></td>
    <td><%= bscall.user_id %></td>
    <td><%= bscall.mplace.PLACE_NAME %></td>


これで一応railsを再起動(本当は不要)して、試してみる。

場所がNOから区分名に変わりました。完成。早かった。
ログもチェック

変更前)
変更後)
なんと!Noごとにクエリ発行してやがりますよRails!
さらにNoの重複(No.1が2行ある)はしっかりと排除して、Noごとにクエリ発行している所が憎めなさ過ぎる...
区分値は、サーバ起動後にキャッシュに持たせた方が良さそうです。

また、modelを改修しただけでは、上記のように場所マスタにクエリを発行せず、
Viewを改修して初めて場所マスタにクエリを乱発するようになるのも特徴的。

当初の目的は達成できたので、今日はこの辺で。