zoukankan      html  css  js  c++  java
  • Ruby on rails开发从头来(三十七) ActiveRecord基础

     ActiveRecordRails提供的一个对象关系映射(ORM)层,从这篇开始,我们来了解Active Record的一些基础内容,连接数据库,映射表,访问数据等。

     

    Active Record使用基本的ORM模式:表映射成类,行映射成为对象,列映射成对象的属性。与很多大量使用配置的ORM库不同,Active Record最小化了配置。想象一下,有一个使用Active Record的程序把Mysql数据库中的orders表转换到类,通过制定的ID查找到order,设定order的名称,然后保存回数据库:

    require "rubygems"

    require_gem "activerecord"

    ActiveRecord::Base.establish_connection(:adapter => "mysql",

    :host => "localhost", :database => "railsdb")

    class Order < ActiveRecord::Base

    end

    order = Order.find(123)

    order.name = "Dave Thomas"

    order.save

    在上面的例子里不需要任何配置,Active Record为我们做了这些事情,下面我们来看看ActiveRecord是怎样工作的。

     

    表和类

        当你创建了一个ActiveRecord::Base类的子类,Active Record假定表名是复数的,而类名是单数的,当类名包括多个单词时,表名被假定为单词间带有下划线,复数形式不规则,例如:

    类名                表名                  类名               表名

    Order               orders                LineItem           line_items

    TaxAgency           tax_agencies          Person             people

    Diagnosis           diagnoses             Quantity           quantities

    Batch               batches               Datum              data

    默认的,Active Record的表名是复数的,类名是单数的,如果你不太习惯,可以通过设置一个全局标记来禁用它,在config目录的environment.rb文件中设置:

    ActiveRecord::Base.pluralize_table_names = false

    单复数规则可以对付大部分情况,对于一些特殊情况,Active Record允许我们覆盖默认的生成的表名,使用set_table_name命令,例如:

    class Sheep < ActiveRecord::Base

    set_table_name "sheep" # Not "sheeps"

    end

    class Order < ActiveRecord::Base

    set_table_name "ord_rev99_x" # Wrap a legacy table...

    end

  • 相关阅读:
    大四寒假日期汇报1.16
    大四寒假日期汇报1.15
    大四寒假日期汇报1.14
    大四寒假日期汇报1.13
    大四寒假日期汇报1.12
    大四寒假日期汇报1.11
    python利用setup.py打包项目
    PixelLink论文解析
    深度学习模型组件 ------ 深度可分离卷积、瓶颈层Bottleneck、CSP瓶颈层BottleneckCSP、ResNet模块、SPP空间金字塔池化模块
    CUDA错误删除
  • 原文地址:https://www.cnblogs.com/dahuzizyd/p/ruby_rails_study_37.html
Copyright © 2011-2022 走看看