`
zww80216
  • 浏览: 47062 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

rails实战- (三)Active Record 初解

阅读更多

作为java中的O/R Mapping的使用者来说,看到rails中的activeRecord的实现后不禁汗颜,原来O/R Mapping可以如此简单。
我反复看过几遍activeRecord的文档,觉得其灵活之处不亚于hibernate,而且简单实用。
现作笔录如下:
1.关联
n:1: belongs_to: XXXX
1:n: has_many:XXX
1:1: has_one :XXX
m:n: has_and_belongs_to_many:XXX
连接join: :through => :XXX (for ex:has_many :photos :through => :slides) rails 1.1才有此功能
特殊关联:
acts_as_list :列表
acts_as_tree :父子关系
acts_as_nested_set

class Slide < ActiveRecord::Base
  belongs_to :slideshow
  acts_as_list :scope => "slideshow_id"
  belongs_to :photo
end
表示sildes表中的slideshow_id为belongs_to :slideshow关系中的外键(FK)
class Category < ActiveRecord::Base
  acts_as_tree
end

 

2.级联
has_many :XXX, dependent => true

3.设定主键:rails不支持复合主键,rails默认数据表中的主键名称为id,如果您的主键不为id,如下设置:
class Photo < ActiveRecord::Base
  set_primary_key "created_at"
end
4.domain中的继承关系
class Photographer < Person
end

class Person < ActiveRecord::Base
end
5.domain中的组件关系
CREATE TABLE people (
   id INT AUTO_INCREMENT NOT NULL,
   type VARCHAR(20),
   name VARCHAR(20),
   email VARCHAR(30),
   street_address VARCHAR(30),
   city VARCHAR(30),
   state VARCHAR(20),
   zip INTEGER(5),
   camera VARCHAR(20),
   PRIMARY KEY (id)
);

class Person < ActiveRecord::Base
  composed_of :address, :class_name => "Address",
              :mapping => [[:street_address, :street_address],
                           [:city, :city],
                           [:state, :State],
                           [:zip, :zip]]
end
class Address
  def initialize(street_address, city, state, zip)
    @street_address = street_address
    @city = city
    @state = state
    @zip = zip
  end

  attr_reader :street_address, :city, :state, :zip
end
6.查找记录
find_by_<column_name> find_by_id
find_by_<column_name>_and_<column_name> find_by_name_and_email(name, email)
7.验证字段有效性
class Photo < ActiveRecord::Base
  validates_presence_of :filename 验证是否为空
end

validates_format_of :email,
                    :with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i
validates_length_of :name, :within => 6..100                   
8.事务处理
def transfer(from, to, amount)
  Account.transaction do
    from.debit(amount)
    to.credit(amount)
  end
end

 

 


 

分享到:
评论

相关推荐

    Pro.Active.Record.Databases.with.Ruby.and.Rails

    ### Pro Active Record Databases with Ruby and Rails #### 概述 《Pro Active Record Databases with Ruby and Rails》一书由Kevin Marshall、Chad Pytel和Jon Yurek共同撰写,旨在帮助开发者掌握如何使用Ruby及...

    Ruby on Rails Tutorial - Learn Web Development with Rails 3rd

    2. **Active Record**:这是一种对象关系映射(Object-Relational Mapping, ORM)模式,允许开发者以面向对象的方式操作数据库。 3. **Restful 设计**:Rails 鼓励采用 RESTful 架构风格进行设计,这有助于创建符合 ...

    Ruby-Rails实战之B2C商城开发

    在本项目"Ruby-Rails实战之B2C商城开发"中,我们将深入探索使用Ruby on Rails这一强大的Web开发框架来构建一个完整的B2C(Business-to-Consumer)在线商城。Rails是Ruby语言的一个核心框架,以其MVC(Model-View-...

    agile-web-development-with-rails_2

    - **Active Record ORM:** 这是一种对象关系映射工具,用于管理数据库交互,简化了数据操作。 - **Rails脚手架(Scaffold):** 自动生成基本的应用程序代码,包括模型、视图、控制器等,大大加快了开发速度。 - **...

    Rails 4 in Action, Second Edition.pdf

    - **Active Record Query Interface**:Rails 4在Active Record中引入了一个新的查询接口,使数据库操作更加直观和高效。 - **Secure Cookies**:为了提高安全性,Rails 4引入了一种新的安全cookie机制,可以更好地...

    Agile Web Development with Rails (4th edition).pdf

    - **数据库访问**:Active Record是Rails中的ORM(对象关系映射)工具,它提供了一种简单的方式来处理数据库操作,减少了SQL语句的编写量。 #### 二、敏捷开发方法论 - **Scrum和Kanban**:本书介绍了两种流行的...

    Crafting Rails 4 Applications

    - **框架内部工作原理**:深入探讨Rails框架内部的工作机制,包括但不限于MVC模式的实现、Active Record的使用方法以及Rails配置选项等。 - **代码优化技巧**:提供了多种方法来优化Rails应用程序的性能,如缓存策略...

    深入浅出.Ruby.on.Rails

    - **Active Record 模式**:深入了解 ActiveRecord 的工作原理,包括关联关系、验证机制等。 - **RESTful 设计**:Rails 遵循 RESTful 设计原则,书中将介绍如何构建符合 RESTful 风格的 API。 - **插件与 Gems**:...

    Agile Web Development with Rails (4th edition)

    - **Active Record**:一种ORM(对象关系映射)工具,使得数据库操作更加简单直观,减少了编写SQL语句的需要。 #### 实战项目案例 书中通过多个实战项目案例来演示Rails的实际应用,例如构建一个简单的博客系统、...

    The Rails 3 Way(2nd)

    1. **全面覆盖Rails 3 API**:本书详细介绍了Rails 3中的所有API接口,包括控制器、模型、视图以及Active Record等核心组件的最新功能。 2. **深入理解设计哲学**:书中强调了Rails 3背后的“方式”——即它的设计...

    RUBY完全自学手册

    - **Active Record**:提供了一种简单的方式来处理数据库操作,将数据库表映射为对象,支持CRUD(创建、读取、更新、删除)操作。 - **Rails CLI**:Rails提供了命令行工具,方便进行项目创建、生成器使用以及数据库...

    nwrun:用于跟踪 Niles West Track Team 的酷炫统计数据的 Rails 应用程序

    在 Nwrun 应用中,可能会有如“运动员”、“比赛”、“成绩”等对象,每个对象对应一个数据库表,通过 Active Record ORM(对象关系映射)进行操作。开发者可以使用 ActiveRecord 的方法来创建、读取、更新和删除...

    training_curriculum

    4.5 Active Record:探索Active Record的数据库操作,包括模型、迁移和关联。 4.6 测试驱动开发:了解Rails的测试框架,如RSpec和Capybara,进行TDD实践。 五、实战项目 5.1 RESTful API开发:创建一个简单的...

    《Ruby从入门到精通》PDF版本下载.txt

    2. **数据库操作**:通过Active Record模式,可以方便地进行数据库查询和数据模型操作。 3. **自动化部署**:使用Capistrano等工具可实现自动化部署,提高生产环境下的部署效率。 ### 六、进阶技巧与最佳实践 1. *...

Global site tag (gtag.js) - Google Analytics