使用sqlite3和ruby

时间:2015-09-07 08:48:08

标签: ruby-on-rails ruby activerecord sqlite

我正在使用带有Ruby和ActiveRecord的sqlite3。我可以看到数据库日志生成SQL语句,我看到生成的DB日志文件 - 但是,我无法找到表(.database只显示main和temp作为数据库)。

Ruby连接信息

from openerp import models, fields, api, _

class example_class_one(models.Model):

    _name           = "example.class.one"

    name           = fields.Char('Name')
    value          = fields.Float('Value')

example_class_one()

class example_class_two(models.Model):

    _name           = "example.class.two"

    name                = fields.Char('Name')
    example_class_ones  = fields.Many2many('example.class.one',string='Example Class Ones')

    @api.one
    def test(self):
        #CREATES SOME example_class_ones and assign them to self
        #MANIPULATE SOME example_class_ones and save them
        #DELETE SOME example_class_ones from self
        pass

example_class_two()

管理模型和ActiveRecord部分

ActiveRecord::Base.establish_connection(
  :adapter => 'sqlite3',
  :host => "localhost",
  :database => 'test1.db'
)

对我可能做错了什么的任何想法?在上面的例子中,我认为我没有选择内存数据库。

1 个答案:

答案 0 :(得分:0)

首先,确保在执行任何其他操作之前在控制台中运行rake db:migrate。这应该创建表。您将看不到包含表格的单独文件,其中所有文件都在test1.db内。我建议使用.sqlite3扩展程序,因此请使用test1.sqlite3

另外,我建议使用config/database.yml配置数据库,而不是使用ActiveRecord手动建立连接。

也就是说,尝试从您的shell中启动rails dbconsole并运行.tables

rails dbconsole
sqlite3>.tables

如果你无法使用它,请使用你的rails console,并检查你的模型,看看它们是否可以访问数据库:

rails c
Admin.create(email: "test@example.com", name: "Test from Console")
Admin.all
=> # Should return the test entry

这应该让你与桌面互动并阅读。每个表都没有单独的文件。