Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby ActiveRecord可能缺少查询SQLite的方法_Ruby_Sqlite_Activerecord - Fatal编程技术网

Ruby ActiveRecord可能缺少查询SQLite的方法

Ruby ActiveRecord可能缺少查询SQLite的方法,ruby,sqlite,activerecord,Ruby,Sqlite,Activerecord,我是新来的,请允许我向你保证,我已经在网上搜索了我的方式,以寻找我在这里非常麻烦的困境的答案。记住这一点,请允许我解释: 我正在运行一个windows系统(确切地说是windows 8),非常想编写一个简单的程序,允许用户借助GUI在一个简单的SQLite数据库中保存和修改某些数据 为此,我安装了Ruby 2.0.0(尽管建议将Ruby 1.9.3用于VisualRuby,但当我使用该版本安装VisualRuby时,它似乎无法远程工作),然后安装了Glade 3.6.7和GTK+,只需单击一下安

我是新来的,请允许我向你保证,我已经在网上搜索了我的方式,以寻找我在这里非常麻烦的困境的答案。记住这一点,请允许我解释:

我正在运行一个windows系统(确切地说是windows 8),非常想编写一个简单的程序,允许用户借助GUI在一个简单的SQLite数据库中保存和修改某些数据

为此,我安装了Ruby 2.0.0(尽管建议将Ruby 1.9.3用于VisualRuby,但当我使用该版本安装VisualRuby时,它似乎无法远程工作),然后安装了Glade 3.6.7和GTK+,只需单击一下安装程序。正如我提到的,令我非常惊讶的是,当我尝试用较旧的Ruby版本运行VisualRuby时,它甚至没有启动,尽管有一个小小的警告,但它在2.0.0中仍然可以工作

现在是你们都嘲笑我的时候了,我当然觉得自己很傻,但每个人都必须从某个地方开始。在实现了一个简单的GUI,并添加了一个漂亮的内核,该内核将与一个控制对数据库的查询的对象进行通信之后,我决定着手处理该数据库连接。首先,我想使用MySQL,因为我非常喜欢它,而且我以前也用过它。尽管我安装了大量的Gems和库,但我无法使数据库连接正常工作。所以我转向了一个在VisualRuby本身中呈现的解决方案。。。。下面的几个示例演示了如何使用ActiveRecord访问SQLite数据库。它们不太具体,但在测试它们并看到它们确实有效之后,我决定使用SQLite

所以我在这里,测试了ActiveRecord,并在这一挫折开始后的相当长的一段时间内取得了第一次成功,而且成功了!我实现了与数据库的连接!然而,成功是短暂的。请允许我向您展示一些代码片段,以便您更好地理解我的问题:


需要“rubygems” 需要“活动记录” 需要“日期”

    ActiveRecord::Base.establish_connection(
            :adapter => "sqlite3",   
                            :database => "db/safebags.db3"
            )
类Safebag 结束


我知道您在这里看不到对象的创建,但我向您保证,我确实在代码中创建了它们。我只是想在我的灵魂代码设计中保持一种无政府状态。现在我确实遇到了两个问题,我用“#”标记了两行。如果我把它们保存在代码中,程序一被访问就会崩溃。请允许我向您展示一个这样的例子:


C:/Ruby200/lib/ruby/gems/2.0.0/gems/activemodel-4.1.1/lib/active\u model/attribute\u methods.rb:435:in'method\u missing':未定义的#
来自C:/Ruby200/lib/ruby/gems/2.0.0/gems/activerecord-4.1.1/lib/active\u record/attribute\u methods.rb:206:in'method\u missing'
来自C:/Users/Nightshade/visualruby/examples/safebags/bin/SafeBagCore.rb:168:in'puttinRow'
来自C:/Users/Nightshade/visualruby/examples/safebags/bin/SafeBagCore.rb:114:in'addSafebag'
来自C:/Users/Nightshade/visualruby/examples/safebags/bin/SafeBagCore.rb:49:in'sendSafeBag'
来自C:/Users/Nightshade/visualruby/examples/safebags/bin/MyClass.rb:19:in'eintragenButton\uu单击'
from C:/Ruby200/lib/ruby/gems/2.0.0/gems/vrlib-1.0.16/lib/GladeGUI.rb:173:in'call'
from C:/Ruby200/lib/ruby/gems/2.0.0/gems/vrlib-1.0.16/lib/GladeGUI.rb:173:in“解析信号中的块(3级)”中
from C:/Ruby200/lib/ruby/gems/2.0.0/gems/vrlib-1.0.16/lib/GladeGUI.rb:394:in'call'
from C:/Ruby200/lib/ruby/gems/2.0.0/gems/vrlib-1.0.16/lib/GladeGUI.rb:394:in'main'
从C:/Ruby200/lib/ruby/gems/2.0.0/gems/vrlib-1.0.16/lib/GladeGUI.rb:394:“显示窗口”中
from C:/Ruby200/lib/ruby/gems/2.0.0/gems/vrlib-1.0.16/lib/GladeGUI.rb:382:in'show'
从main.rb:15:in`'

你明白我的问题了。我在这个网站的某个地方读到,Ruby 2.0.0可能不适合SQLite,应该降级到1.9.3。。。。但是,请记住我提到的一个问题,即这个旧版本根本不适用于VisualRuby

在安装了一个多星期的各种gem之后,包括MySQL、MySQL2(甚至没有安装)、DBI,以及其他一些可能是出于绝对的疯狂的东西,我显然已经不知所措了。我一定在监督什么。如果你们能帮助我,我将非常感激

请注意,如果我把两行问题都省略,我可以在数据库中添加一行。。。然而,如果我迭代并尝试添加第二行,它根本不会做任何事情--

ActiveRecord应该能够使用的任何其他方法也会得到相同的结果,包括:find、where

请尽你所能帮助我。我只是拒绝相信Ruby不能连接和查询数据库,我相信你们中的一些人可以向我证明它确实可以:)


-RubyJason

如果您现在只进行开发,那么可以使用database.yml文件。如果您想部署应用程序,它可能会在以后有用。我使用的是SQLite3,我认为如果我们都追求更好地使用ActiveRecord,我们就会欣赏SQLite3 因为它是什么。我仍在做一些与您略有不同的事情,并且能够使数据库与您相似,但在我了解如何使用schema.rb和迁移之后,我的连接可能需要工作。我还不在乎任何型号。我可以使用SQLite浏览器,这是我在Kali Linux上为该数据库提供的GUI。我想你也可以在Windows上买到,但我不能肯定。如果可以的话,也许你可以找到它的来源,因为它可能会为你的应用程序的运行提供线索。只是一个想法。是的!刚刚在这里找到的。
祝你好运

create
find
(以及
find\u by…
方法)是类级方法,但在这里,您试图在实例中使用它们。我建议你继续读下去,也许再过几个上午
def puttinRow(safeBagID, shopi, employeeName, date)
#   self.create
    self.safebagid = safeBagID
    self.datesent = date
    self.shop = shop
    self.employeesent = employeeName
    self.validness = 1
    self.save

end

def gettinValid(safeBagID)
#   safebag = self.find_by_safebagid(1)
    return 1
end
C:/Ruby200/lib/ruby/gems/2.0.0/gems/activemodel-4.1.1/lib/active_model/attribute_methods.rb:435:in `method_missing': undefined method `create' for #<Safebag:0x667cdd0>
     from C:/Ruby200/lib/ruby/gems/2.0.0/gems/activerecord-4.1.1/lib/active_record/attribute_methods.rb:206:in `method_missing'
     from C:/Users/Nightshade/visualruby/examples/safebags/bin/SafeBagCore.rb:168:in `puttinRow'
     from C:/Users/Nightshade/visualruby/examples/safebags/bin/SafeBagCore.rb:114:in `addSafebag'
     from C:/Users/Nightshade/visualruby/examples/safebags/bin/SafeBagCore.rb:49:in `sendSafeBag'
     from C:/Users/Nightshade/visualruby/examples/safebags/bin/MyClass.rb:19:in `eintragenButton__clicked'
     from C:/Ruby200/lib/ruby/gems/2.0.0/gems/vrlib-1.0.16/lib/GladeGUI.rb:173:in `call'
     from C:/Ruby200/lib/ruby/gems/2.0.0/gems/vrlib-1.0.16/lib/GladeGUI.rb:173:in `block (3 levels) in parse_signals'
     from C:/Ruby200/lib/ruby/gems/2.0.0/gems/vrlib-1.0.16/lib/GladeGUI.rb:394:in `call'
     from C:/Ruby200/lib/ruby/gems/2.0.0/gems/vrlib-1.0.16/lib/GladeGUI.rb:394:in `main'
     from C:/Ruby200/lib/ruby/gems/2.0.0/gems/vrlib-1.0.16/lib/GladeGUI.rb:394:in `show_window'
     from C:/Ruby200/lib/ruby/gems/2.0.0/gems/vrlib-1.0.16/lib/GladeGUI.rb:382:in `show'
     from main.rb:15:in `<main>'