ruby-on-rails – 在Ruby on Rails 3中动态创建表和模型

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 在Ruby on Rails 3中动态创建表和模型前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
请耐心等待.

在我正在开发的应用程序中,用户可以将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)@H_301_32@ 
 

然后使用模型,您可以动态更改表名称,如:

MyModel.table_name = "my_table"
records = MyModel.all@H_301_32@ 
 

好吧,你的一个问题是模型逻辑和关联.你有点受限,但也许你可以解决这个问题.

我猜不是最好的做法,但如果你需要这个.我认为它可能会奏效!

猜你在找的Ruby相关文章