私はこのようなものを持っています:
class Person < ActiveRecord::Base
has_many :things do
def [](kind)
find(:first, :conditions => ["kind = ?", kind.to_s])
end
def []=(kind, config)
thing = self[kind]
if thing.nil?
#create new thing
ap self # prints all things that person has
else
# update
end
end
end
上記のコードを使用すると、次のようなことができますperson.things[:table]
。それは、人物の ID が何であれ、テーブルの種類の person_id を持つものを見つけます。最初の方法は問題ありません。
実装方法がわからない2番目の方法です。テーブルの構成を設定したい場合は、このようにしたいperson.things[:table] = {:my => "config"}
テーブルが既に存在する場合は問題ありません。しかし、新しい を作成したい場合はどうすればよいthing
ですか?
通常、モノの作成は次のようになります。
thing = Thing.new({
person_id => person[:id],
kind => "table"
config => {}
})
しかし、私は関連付けの拡張を行っているので、新しいオブジェクトを作成したいのですが、どうすれば個人IDを取得できますか?
ルビー1.8.7
レール2.3.14 を使用