[前][次][番号順一覧][スレッド一覧]

rails:2050

From: "YOKOYAMA, Hideyuki" <yokoyama@c...>
Date: Thu, 01 Mar 2007 08:19:58 +0900
Subject: [rails:2050] Re: コード値の表示時の変換方式


横山です
いつもお世話になっております

内海様 ご回答ありがとうございます

なるほど そういう手法もありますね
Genre クラスは music.rb の中に定義するのもありかもしれません
考えてみますと、インスタンス?プロパティ?を上書きするので
@m.genre で元の数字を取得でき
@m.genre.to_desc で表現を取得するのは無理そうな気がしてきました

調べてみましたら ActiveRecord のデフォルトアクセサを
上書きする方法もあるみたいですが
それも元の値を取得するには genre_before_type_cast というメソッド
を呼ぶ必要があるようです

まとめると
@m.genre に 1 = "邦楽" がセットされている場合
@m.genre で 1 が取得でき @m.genere.to_desc で "邦楽" が取得できる
という実装は無理そうで
@m.genre で 1 を取得、@m.genre_name で "邦楽" を取得
という方法か
@m.genre.to_desc で "邦楽" を取得、@m.genre.id で 1 を取得
または
@m.genre で "邦楽" を取得、@m.genre_before_type_cast で 1 を取得
ならば可能
というところでしょうか

あとは開発標準で方式を統一すれば
Rails の規約文化に慣れていれば問題なさそうです
ありがとうございました

|内海@ベルギーです。
|
|> |モデル内で次のような関数を作る方がより良い解決策でしょうか?
|> |   def genre_name
|> |     GENRES[:genre]
|> |   end
|>
|> さらに to_s や to_i と同じように
|> <%= @m.genre.to_desc %>
|> と出来ればベストのイメージです
|> なんらかの方法で上記の
|> genre.to_desc
|> は定義可能なんでしょうか?
|
|ジャンルクラスを定義(modelを作る)したらどうでしょうか?
|models/genre.rb
|class Genre
|   GENRES = {
|    1 => "邦楽",
|    2 => "洋楽",
|    3 => "クラシック",
|    4 => "その他"
| }.freeze
|
|   attr_reader :id
|   def initialize(genre)
|     @id = genre
|   end
|
| def to_desc
|     return GENRES[@id]
|   end
|
|end
|
|それで models/music.rb で def genre を作成し 
|て、:integerではなく
|new Genre()してそのリファレンスを返す。そうすれば  
|@m.genre.to_desc で
|アクセスできるようになりますよね。 ただし、元の数字を参照したい 
|時は
|@m.genreではなく@m.genre.id としなければいけなくなります 
|が。
|
|もっといい方法ありますでしょうか?>識者の方々。


/*----
横山 秀行
YOKOYAMA, Hideyuki <yokoyama@c...>

〒100-0005 東京都千代田区丸の内1−9−1 EA207号
TEL:???-????-????

-- PGP PUBLIC KEY SERVER URL --
http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x089F75BE
----*/


--
ML: rails@r...
使い方: http://QuickML.com/

[前][次][番号順一覧][スレッド一覧]

      2041 2007-02-28 05:47 [hisano@s...         ] 多段のlayoutの作成方法                  
      2042 2007-02-28 08:03 ┗[moriq@m...          ]                                       
      2043 2007-02-28 09:01  ┗[hisano@s...         ]                                     
      2044 2007-02-28 17:50   ┗[yokoyama@c...       ] コード値の表示時の変換方式        
      2045 2007-02-28 18:09    ┣[shachi@j...         ]                                 
      2046 2007-02-28 19:06    ┗[utsumi@t...         ]                                 
      2047 2007-02-28 22:35     ┗[yokoyama@c...       ]                               
      2048 2007-02-28 23:52      ┣[utsumi@t...         ]                             
      2049 2007-03-01 00:15      ┃┣[utsumi@t...         ]                           
      2052 2007-03-01 00:24      ┃┃┗[yokoyama@c...       ]                         
->    2050 2007-03-01 00:19      ┃┗[yokoyama@c...       ]                           
      2051 2007-03-01 00:23      ┗[moriq@m...          ]                             
      2053 2007-03-01 00:30       ┣[moriq@m...          ]                           
      2055 2007-03-01 16:51       ┗[yokoyama@c...       ]                           
      2056 2007-03-01 18:59        ┗[moriq@m...          ]