重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

初歩的な質問で恐縮です。
Ruby on Rails でDBのカラムにハイフンは使えますでしょうか。
多言語対応で中国語などを扱っているのですが、
カラム名が name_zh-tw のようなものがあるのですが、値が取得できずに困っております。。

例)
Items テーブルに name_zh-twがある場合。

@item = Items.find_by_i(1000)
@item.name_zh-tw
=>NoMethodError: undefined method `name_zh' for #<Item:0xb605f364>
のようになってしまいます。。

また、上記以外の箇所でもダブルクォートで囲ったら大丈夫な場合がありますが、ログには警告がでます。これは仕方ないのでしょうか。。

[WARN] Exception occurred during reader method compilation.
[WARN] Maybe name_zh-tw is not a valid Ruby identifier?
[WARN] compile error

-----
環境は以下の通りです。
何卒よろしくお願いいたします。

Ruby1.8.7
Rails2.3.15
MySQL5.5

A 回答 (1件)

-は引き算として判断されます。


こんな書き方もできたはずです。
@item['name_zh-tw']
@item[:'name_zh-tw']
文字列またはシンボルで、
-や特殊な記号があるとシンボルにするにも:'name_zh-tw'としないと不都合がでます。
    • good
    • 0
この回答へのお礼

ご連絡が遅くなって申し訳ありません。
教えて頂いた書き方で出来ました!!

こんな書き方もできるんですね。。勉強になりました(どちらでもできました)。
@item['name_zh-tw']
@item[:'name_zh-tw']

他のwarningが出た箇所も、シングルクウォート(またはダブルクウォート)を付ければ解決しました。


ありがとうございました!!

お礼日時:2013/07/12 12:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!