1

これがそのことです。「languages」と「default_language」の2つの列を持つCountryモデルがあります。したがって、たとえば、スイスの場合、これらの列はそれぞれ「de、fr、it」と「de」に設定されます。

ここで、Country.languagesを実行すると、「de、fr、it」文字列が取得されます。これをオーバーライドして、Country.languagesを取得すると、配列["de"、 "fr"、 "it"]を取得するにはどうすればよいですか?

確かに、関数def available_languagesを作成することはできますが、それでも、言語を公開したくありません。

4

1 に答える 1

5

この場合の単純な配列の場合、独自のソリューションを作成することをお勧めします。

これは、getter/setterメソッドをオーバーライドすることで実行できます。

モデル内:

class Country < ActiveRecord::Base
  def languages
    read_attribute(:languages).split(',')
  end
  def languages=(array)
    write_attribute(:languages,array.join(','))
  end
end

ハッシュについては、を使用できます。http://api.rubyonrails.org/classes/ActiveRecord/Store.htmlActiveRecord::Storeを参照してください。

より一般的なオブジェクト(配列だけでなく、使用できますserialize)については、http://duanesbrain.blogspot.co.nz/2007/04/ruby-on-rails-persist-array-to-database.htmlを参照してください

于 2012-09-04T09:20:57.620 に答える