我有这样的事情:
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]
的事情,它会找到一个带有 person_id 的东西,不管这个人的 id 是什么,以及一种表格。第一种方法很好。
这是我不知道如何实现的第二种方法。如果我想设置一个表的配置,我想这样做person.things[:table] = {:my => "config"}
如果表已经存在,那就没问题了。但是如果我想创建一个新的thing
呢?
通常,创建一个事物应该是这样的:
thing = Thing.new({
person_id => person[:id],
kind => "table"
config => {}
})
但是,由于我正在做一个关联扩展,并且想要创建一个新对象,我如何获取人员 ID?
使用
ruby 1.8.7
rails 2.3.14