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... ]