2011-11-08 8 views
1

これの良い例が見つからないので、正しい方向を指してください。新しいオブジェクトをレールに作成する

私は50州とDCでオブジェクトを作成しようとしています2つの略称属性と名前

でゼロからオブジェクトを作成します。このリストが頻繁に変わるのを私は見ていないので、データベースが必要ではない、多分私は間違っているかもしれません。

私は成功せず、次のことを試してみました:

new_state = Object.new   
new_state.abbr = state[:abbr]  
new_state.name = state[:name] 

と私は私が間違って何をundefined method abbr=' for #<Object:0x00000006763008>

をしていますか?

答えて

2

YAMLの状態/略語/ i18nの読み取り/保持を使用することができます。decoder Rubyで

Decoder.i18n = :en 
country = Decoder::Countries[:US] 
country.to_s 
# => "United States"  

state = country[:MA] 
state.to_s 
# => "Massachusetts" 
+1

これはすばらしいことですが、今では車両が製造しているモデルはありますか? haha –

+0

KBB APIを使用する[試行](http://tektastic.com/2008/03/car-or-auto-make-model-year-database.html)がありました – tolitius

2

あなたはその背後にあるデータベースせずに単純なクラスを作成することができます。

class State 
    attr_accessor :abbr, :name 
end 

new_state = State.new 
new_state.abbr = state[:abbr] 
new_state.name = state[:name] 

あなたのバージョンでは動作しませんObjectabbr=またはname=メソッドを持っていないと、それはその場でそれらをすることはありませんので、 。

+0

いつものように、あなたのコメントは素晴らしかったです。私は他の方法が私にとってより良い解決策になると思う。 –

2

オブジェクトは、私はあなたがに慣れ前提とJavaScriptで1とはかなり異なっているので、その場でプロパティを追加することは簡単ではないのです。ハッシュ、代わりにJSで連想配列に非常に似て、あなたはあなたの目的のためにそれを使用することができます。

states = Hash.new # or just {} 
states[state[:abbr]] = state[:name] # {'MD' => 'Maryland'} 
states['AL'] = 'Alaska' # {'MD' => 'Maryland', 'AL' => 'Alaska'} 
states.keys # => ['MD', 'AL'] 
states.values # => ['Maryland', 'Alaska'] 
states['AL'] # => 'Alaska' 

あなたが見ることができるように、「ハッシュは、追加見つけ、箱から出してフェッチ提供し、あなたがドン自分のクラスを定義することすらできません。 状態を追加したら、コンテンツをフリーズすることもお勧めします。

関連する問題