【问题标题】:Best way to use an SQL script in Ruby Sinatra, with DataMapper, to create a simple table?在 Ruby Sinatra 中使用 SQL 脚本和 DataMapper 创建简单表的最佳方法是什么?
【发布时间】:2012-12-13 08:05:37
【问题描述】:

我想在我的 Sinatra 应用程序中创建一个简单的表,使用 DataMapper 进行数据库连接,使用以下 SQL:

CREATE TABLE `prov_abbrev` (
  `abbrev` varchar(2) NOT NULL DEFAULT '',
  `province` varchar(256) NOT NULL DEFAULT ''
) DEFAULT CHARSET=utf8;

    INSERT INTO `prov_abbrev` (`abbrev`,`province`)
    VALUES
    ('AB','Alberta'),
    ('BC','British Columbia'),
    ('MB','Manitoba'),
    ('NB','New Brunswick'),
    ('NL','Newfoundland and Labrador'),
    ('NT','Northwest Territories'),
    ('NS','Nova Scotia'),
    ('NU','Nunavut'),
    ('ON','Ontario'),
    ('PE','Prince Edward Island'),
    ('QC','Quebec'),
    ('SK','Saskatchewan'),
    ('YT','Yukon');

我想将它用作各种其他模型的查找表,在各种应用程序中,所以它会被使用很多。做这个的最好方式是什么?只设置一个包含数据的哈希/数组会更有意义吗?将数据放在表格中是否有任何好处,例如能够使用 js 从表单中查找值...

【问题讨论】:

    标签: sql ruby sinatra datamapper


    【解决方案1】:

    我会使用Data Mapper Migrations gem:进行向上迁移以创建表,然后在插入行时循环遍历 Ruby 数组。 (以及一个简单的下拉表作为向下迁移)。

    【讨论】:

    • 因此实际上没有任何方法可以只执行该 SQL。我刚刚使用数据创建了一个 CSV 文件,并使用 ruby​​ 的内置 CSV 来填充我使用 DM 设置的表(每次使用 DataMapper.auto_migrate 都创建新的!)。我想这只是一种更“自动化”的方式来做你建议的事情。
    • 好吧,如果你已经有了 SQL 脚本并且不担心可移植性,你可以直接打开 mysql 客户端,直接导入 SQL。或者您可以逐行阅读并在迁移like this 中执行原始 SQL。
    • 感谢您链接到该迁移示例,这实际上是我最初想要的,但我后来决定采用 CSV 方式对我的目的更有意义(事实上,我快速轻松刚刚在 CSV 文件中添加了美国各州的缩写)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-22
    • 1970-01-01
    • 2013-02-18
    • 1970-01-01
    • 2017-07-29
    • 1970-01-01
    相关资源
    最近更新 更多