据我所知,该屈框架,不像Rails中,不提供ORM。在这种情况下,你怎么说话的末日应用一个数据库?或者是西纳特拉仅适用于不使用DB的应用程序?

有帮助吗?

解决方案

如果你喜欢的ActiveRecord,使用。或者是其他东西。 DataMapper的,例如。对于使用SQLite AR,这工作:

require 'rubygems' # may not be needed, depending on platform
require 'sinatra'
require 'active_record'

class Article < ActiveRecord::Base
end

get '/' do
  Article.establish_connection(
    :adapter => "sqlite3",
    :database => "hw.db"
  )
  Article.first.title
end

其他提示

如果您正在使用西纳特拉,我不能建议 DataMapper的的高度不够。我有一对夫妇的Rails应用在那里我坚持用ActiveRecord,和我经常骂它的缺点和设计上的缺陷。如果你在西纳特拉,DataMapper的是一个非常实用的选择。

require "rubygems"
require "sinatra"
require "datamapper"

DataMapper.setup(:default, "sqlite3::memory:")

class Post
  include DataMapper::Resource

  property :id,    Integer, :serial => true
  property :title, String
end

Post.auto_migrate!
first_post = Post.new
first_post.title = "First!"
first_post.save

get "/" do
  Post.get(1).title
end

这是你如何与数据库通信,您可以选择的ORM的一个或一些NoSQL的适配器。有许多可供选择,其中一些人专门制作了西纳特拉:

例如,有屈ActiveRecord的扩展结果 最初由布雷克Mizerany,西纳特拉结果的创建者创建 它扩展屈用ActiveRecord辅助方法和Rake任务

另一种选择是屈续集扩展。结果 这个小的延伸增加了数据库结构,迁移,和Sequel适配器右到屈。

或者屈-redis的,或屈-蒙戈,等等。只要搜索你想要的东西。

不过,你不妨随意使用任何独立的库,请查看西纳特拉食谱上的数据库 ,其中列出了几个如何使用流行的数据库映射器与西纳特拉的例子。虽然提到那里,这个建议的做法是使用DataMapper的,我怀疑这是一个单纯的喜好,因为没有在西纳特拉本身表明这一点。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top