在本例中:
require 'rubygems'
require 'sqlite3'
require 'sequel'
db = SQLite3::Database.new "fruits.db"
db2 = Sequel.sqlite("fruits.db")
db.execute 'CREATE TABLE "fruit" ("box_id" INTEGER, "apples" INTEGER, "oranges" INTEGER, "total" INTEGER)'
db.execute "INSERT INTO fruit(box_id,apples,oranges) VALUES(1,2,2)"
thisBox = db2[:fruit][:box_id => 1]
这在SQLite3中起作用:
db.execute "UPDATE fruit SET total = apples + oranges WHERE box_id=1"
但我无法在续集的一行中找到相同的内容:
thisBox.update(:total => :apples + :oranges)
返回错误:
undefined method '+' for :unfollows:Symbol
我找到的唯一解决办法是:
apples = thisBox[:apples]
oranges = thisBox[:oranges]
thisBox.update(:total => apples + oranges)
1条答案
按热度按时间kupeojn61#
我强烈推荐阅读Sequel cheat sheet,README和不同类的文档,它非常强大,在我看来,是一个很棒的ORM。
把它作为学习的起点,它也会展示一个简单但不是最有效的方法来做你所问的事情:
注意事项:
Sequel允许我们增量地构建语句,如果它对我们的代码有用的话。我指向一个记录,然后可以以不同的方式重用变量。这真的很强大,在文档中有介绍。