所以,我试图建立一个小型的社交网络"出于教育目的,但我坚持要给用户和朋友#34;在数据库中。你可以用一种更简单的方式做到这一点,但我能想到的唯一方法是为每个包含他们朋友的用户提供一个单独的表。
但是,为此,我需要使用变量作为表名动态创建表。我已尝试使用const_set,但似乎由于某种原因它无法使用DataMapper(或者我可能只是愚蠢)。当我试图添加属性时,继续收到uninitialized constant Serial
之类的错误。
那我该怎么办?有解决方案吗?我可以通过其他方式动态创建表吗?或者有更简单的方法来拯救朋友。
感谢。
答案 0 :(得分:0)
module DMSerial
def self.included base
base.class_eval do
include DataMapper::Resource
property :id, base::Serial
end
end
end
def create_model model_name, &block
Object.const_set(model_name, Class.new)
model = Object.const_get(model_name)
model.class_eval {include DMSerial}
model.class_eval &block
end
[1,2,3].each do |num|
create_model "Model#{num}" do
property :val, Integer, :default => num
end
end