アクティブなレコードオブジェクトに対して属性のgetterメソッドを呼び出して、カスタム定義オブジェクトのコレクションではなく、文字列のコレクションを返すようにしたいとします。RailsでActiveRecordを使用してプリミティブのコレクション(カスタムオブジェクトではなくString、Fixnumなど)をオブジェクトに割り当てる方法はありますか?
例えば、
person.favourite_song_titles => ["Somewhere over the rainbow","Beat it","Poker face"]
ませ
person.favourite_song_titles => [#FavouriteSongTitle name: "Somewhere over the rainbow",#FavouriteSongTitle name:"Beat it",#FavouriteSongTitle name:"Poker face"]
私は「FavouriteSongTitles」クラスを定義し、これらの値に関連付けられた動作がないとして「has_manyの」および「belongs_toの」を行うために持っている必要はありません。
理想的には私はテーブルが欲しい:
create_table "people" do | t |
#some attributes defined here
end
create_table "favourte_song_titles" | t |
t.column "person_id", :integer
t.column "value", :string
end
そして、私の想像では、次のように行くだろういくつかの参加構文:
Class Person < ActiveRecord::Base
has_many :favourite_song_titles, :class_name => "String", #some config to tell active record which table/column to use
end
"あなたはフレームワークと戦っているようです。なぜあなたはHABTM関係が気に入らないのですか?それはあなたのモデル関係のためのケースであるようです。 – corroded
もしあなたがfavourite_song_titlesのためにテーブルを使うつもりなら、あなたは手動でSQL呼び出しをしたいのでなければ、ARを使って値を得ることができます。ちなみに、 "フレームワークとの戦い" – corroded