美文网首页sinatra学习
Sinatra学习 day 6

Sinatra学习 day 6

作者: 长物记 | 来源:发表于2015-06-01 12:04 被阅读241次

Date: 2013-04-09
Title: DataMapper
Tags: ruby,datamapper

学习sinatra的时候,自然会到选择ORM(Object Relational Mapper)的这一步。

ruby的ORM还是蛮多的,比较流行的有rails的ActiveRecord,DataMapper,Sequel。

为什么选择DataMapper呢?我的原因很简单,Sinatra和DataMapper一起出现的次数比较多。那种性能,效率什么的东西对我一个业余选手来说太高深了。

安装很简单

gem intall data_mapper

然后根据数据库选择adapter

gem install dm-sqlite-adapter

rubygem的使用方法都差不多,直接文件中调用就ok了

require 'rubygems'
require 'data_mapper'

数据库连接

DataMapper.setup(:default,"sqlite://#{Dir.pwd}/test.db)

Mysql和Postgres就要求用户名和密码了

DataMapper.setup(:default,'mysql://user:password@hostname/database')

然后定义自己的model

class Post
    include DataMapper::Resource
    
    property :id, Serial
    property :title, String
    property :body, Text
    property :create_at, DataTime
end

更多参数参考Properties文档dm-types文档

Associations

一对多

class Post
    has n,:comments
end

class Comment
    belongs_to :post
end

多对多

class Categorization
  include DataMapper::Resource
  property :id,         Serial
  property :created_at, DateTime
  belongs_to :category
  belongs_to :post
end


class Post
  has n, :categorizations
  has n, :categories, :through => :categorizations
end

class Category
  has n, :categorizations
  has n, :posts,      :through => :categorizations
end

最后在model文件添加

DataMapper.finalize

生成表

一种做法是直接在model文件中加入

DataMapper.auto_migrate!

然后把文件运行下就ok啦。
还有一种是在irb中调用model,然后

irb> modelclass.auto_migrate #模型类

现在可以建立对象了

@post= Post.create(
    title:"Title",
    body:"Body",
    created_at:Time.now
    )

CRUD

Create

post=Post.new
post.save

Post.create

Read

Post.all    
Post.get(1) 
Post.first
Post.last
Post.first(title:"Title")

Update

post=Post.first
post.update(title:"New title")

Delete

Post.first.destroy

相关文章

  • Sinatra学习 day 6

    Date: 2013-04-09Title: DataMapperTags: ruby,datamapper 学习...

  • Sinatra学习 day 1

    Date: 2015-05-27Title: Day 1 Sinatra是一个ruby写的轻量型的框架。哦,不是框...

  • Sinatra学习 day 2

    Sinatra支持很多的模板引擎,erb,haml,slim等等,默认的是erb。我更爱haml,因为主页很漂亮,...

  • Sinatra学习 day 3

    layout layout的好处就是可以减少文件的重复代码,DRY(Don't Repeat Yourself)这...

  • Sinatra学习 day 4

    External Views sinatra默认的视图文件是放在views文件夹下面的,css等文件是放在publ...

  • Sinatra学习 day 5

    RESTful URLs 直接参考rails routing Sinatra直接提供了这些http verb Co...

  • sinatra 0.1.0 源码学习

    声明 本文系 sinatra 源码系列第 2 篇。系列的目的是通过 sinatra 学习 ruby 编程技巧。文章...

  • sinatra 0.1.5 源码学习

    声明 本文系 sinatra 源码系列第 3 篇。系列的目的是通过 sinatra 学习 ruby 编程技巧。文章...

  • sinatra 0.2.0 源码学习

    声明 本文系 sinatra 源码系列第 4 篇。系列的目的是通过 sinatra 学习 ruby 编程技巧。文章...

  • sinatra 0.3.0 源码学习

    声明 本文系 sinatra 源码系列第 5 篇。系列的目的是通过 sinatra 学习 ruby 编程技巧。文章...

网友评论

    本文标题:Sinatra学习 day 6

    本文链接:https://www.haomeiwen.com/subject/mbcdqttx.html