请耐心等待.
在我正在开发的应用程序中,用户可以将CSV文件上传到系统中,包括他们喜欢的任何标题以及数据中的任何列.然后使用CSV在数据库中生成一个表并将数据写入其中,然后可以通过系统访问它以进行各种用途,搜索,排序更新等.
旧的(现在已经不复存在的系统)是在PHP中并处理得很好,虽然很多原始sql创建表和框架支持魔术模型(如果表存在,所以没有在类中定义的对象)模型文件)
新版本是用RoR3编写的,我还没想办法做到这一点.我已经设法通过在模型中调用迁移工具来解决表创建问题(不是很多Rails-y我知道,但需要…),但是一旦创建到新表,我找不到链接到新表的方法写入数据,建立关系或其他任何东西.
我希望的是,
a)这里的某个人有更好的方法来做到这一点,而不是动态创建表格和模型(这里的警告,这些文件可以包含100’000的记录和不同的字段,因此单个表格选项不能很好地工作)即针对此问题的更好的数据库设计.
要么
b)可以告诉我如何理清模型问题.
我已经看过Nic博士的魔法模型宝石用于RoR但它似乎在RoR3中不起作用,除非我做错了什么
对不起,文本墙,期待任何建议
提前致谢
解决方法
好吧,我认为我得到了一个解决方案,但如果很好,那就不一样了.
基本上,您通过执行sql通过Rail ActiveRecord来动态创建表.
接下来使用Model并更改其名称(Model.table_name).
像这样的东西:
// sql Create table sql = "CREATE TABLE my_table (id int(11) NOT NULL AUTO_INCREMENT,code varchar(3) NOT NULL)" ActiveRecord::Base.connection.execute(sql)
然后使用模型,您可以动态更改表名称,如:
MyModel.table_name = "my_table" records = MyModel.all
好吧,你的一个问题是模型逻辑和关联.你有点受限,但也许你可以解决这个问题.
我猜不是最好的做法,但如果你需要这个.我认为它可能会奏效!