`
ruby8
  • 浏览: 208337 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Rails详细介绍(十一)(主键和ID)

阅读更多

     数据库定义里都使用了一个integer型的字段id作为主键,这是Active Record的一个约定。

    如果你从一个新的数据库结构开始,可能会遵循约定,给所有的表都使用id作为主键,但是,当你使用的是一个既存的数据库开始的时候,Active Record提供了简单的方法来让你重新给表指定主键,例如:

class BadBook < ActiveRecord::Base

set_primary_key "isbn"

end

 

 

    通常,Active Record会注意给新创建的记录生成主键值-使用自增长的整数。不管怎样,当你override表的主键名字的时候,你就需要自己负责给新建记录一个唯一的主键值。也许有些让人惊讶,你还是设置一个id的属性来完成这件事,因为Active Record所关心的是,主键的设置永远都使用名为id属性,set_primary_key的声明只是设置了使用的列名,下面的例子,我们使用ISBN作为主键。

book = BadBook.new

book.id = "0-12345-6789"

book.title = "My Great American Novel"

book.save

# ...

book = BadBook.find("0-12345-6789")

puts book.title # => "My Great American Novel"

p book.attributes #=> {"isbn" =>"0-12345-6789",

"title"=>"My Great American Novel"}

 

 

 

    也就是说,在设置主键的时候,使用id属性,其他时候,使用真实的列名。

分享到:
评论

相关推荐

    Agile Web Development with Rails中文版 3rd Edition

    本章节详细介绍了Rails应用的基本架构,包括三个核心组件:模型(Model)、视图(View)和控制器(Controller),即MVC模式。 **2.1 模型、视图与控制器** - **模型(Model)**:负责处理应用数据逻辑的部分,通常...

    Ruby On Rails-Cheatsheet

    - 每个表都有一个 `id` 字段作为主键。 - **保存数据库结构** - 最好保存一份数据库结构的副本在 `db/create.sql` 文件中。 #### 数据库查询 - **基础查询** - `find(:all, :conditions =&gt; "date_available ()...

    Web开发敏捷之道-应用Rails进行敏捷Web开发-第三版.rar

    在前两版的内容架构基础上,第3版增加了对Rails 2中新特性和最佳实践的内容介绍。相比第2版中的内容,Rails 2增加了REST、资源、轻量级web service等新特性。本书涵盖了这些全新的内容,因此能更好地体现出Rails框架...

    Rails中应用Ext.tree:以中国的省市地区三级联动选择为例

    `province_id`是外键,关联到`Province`模型的主键。同样,我们还需要一个`Province`模型来存储省份信息。这样,我们就构建了一个典型的多对多关联关系。 接着,我们要在数据库中导入`cities.sql`中的数据。这可以...

    mysql自增ID起始值修改方法

    以下是对如何修改和设置MySQL自增ID起始值的详细说明: 1. **创建表时设置自增ID**: 当创建一个新的表时,可以将某个字段声明为自增主键。例如: ```sql CREATE TABLE table1 ( id INT AUTO_INCREMENT PRIMARY...

    ruby on rails 3.1.0数据库查询方法汇总

    通过上述知识点的介绍,我们可以看到 Ruby on Rails 3.1.0 提供了非常丰富且强大的数据库查询功能,使得开发者能够更加高效地进行数据处理。同时,合理的查询设计和性能优化也至关重要,能够有效提升应用程序的性能...

    Web开发敏捷之道第三版(中文版).pdf

    - **主键与id**:说明主键和id字段在ActiveRecord中的作用。 - **连接数据库**:讨论如何配置ActiveRecord以连接到不同的数据库。 - **CRUD**:详细介绍如何使用ActiveRecord实现创建(Create)、读取(Read)、更新...

    Ruby On Rails中如何避免N+1问题

    Orders中含有一个外键customer_id,指向了Customers的主键id。 想要得到所有Customer以及其分别对应的Order,一种写法是 SELECT * FROM Customers; 对于每一个Customer; SELECT * FROM Orders WHERE Orders....

    Ruby on Rails中的ActiveRecord编程指南

    Rails默认使用表名的复数形式以及`id`作为主键字段,这种约定简化了代码编写,并减少了错误的可能性。 #### 三、类定义中的宏风格方法 **把宏风格的方法放在类别定义的前面** 例如`has_many`, `validates`等,这些...

    JDBC通用DAO CRUD(不是Hibernate)

    自己写的一个JDBC通用DAO ...因为没有用xml来映射表结构确定哪一个为该表的主键(因为一对多的情况下会有2个ID),所以id取名遵循 RUBY ON RAILS 的原则 "约定大于配置" 下一个版本会支持数据库表字段_写法:user_id

    使用Ruby on Rails和PostgreSQL自动生成UUID的教程

    在Ruby on Rails开发中,有时我们希望使用UUID(Universally Unique Identifier)而非传统的自增整数ID作为模型的主键。UUID是一种确保每个生成的ID在全球范围内都是唯一的标准方法。在与PostgreSQL数据库配合时,...

    Ruby-使用Postgres实现一个Leancloudclone

    在Postgres中,可以创建表来表示这些概念,例如,一个`objects`表用于存储用户上传的各种对象数据,字段可能包括`object_id`(主键)、`class_name`(类名,对应于 Leancloud 的类)、`data`(JSON格式的属性)等。...

    mongoid_auto_increment:向您的Mongoid :: Document添加一个自动递增字段

    总之,`mongoid_auto_increment` gem 提供了一个方便的方式来为Mongoid模型添加自动递增字段,使得在MongoDB和Rails环境中也能实现类似SQL数据库的自增ID功能。通过理解和正确使用这个gem,你可以更有效地管理和操作...

    Mybatis-Plus入门第二天讲义1

    在这里,我们创建了一个`User`对象,设置了主键id为2,然后调用`selectById`获取对应的数据。 1.3 新增数据 同样在`UserMapperTest`中,我们创建了一个新的`User`对象,并设置了相关属性。通过调用`insert`方法,...

    C# Castle.ActiveRecord CS源码示例教程.zip

    在上面的例子中,`User` 类对应数据库中的 "Users" 表,`Id` 是自动增长的主键,`Name` 和 `Email` 是普通字段。 在 Winform 应用中,你可以利用 Castle.ActiveRecord 提供的 CRUD(创建、读取、更新、删除)操作...

    keys

    4. **OAuth与API密钥管理**:如果应用涉及与其他服务的集成,"keys"可能是指OAuth客户端ID和秘密,或者第三方API的访问令牌。 5. **路由(Routing)**:Rails的路由系统可能会有特定的"keys"用于识别和处理不同的...

    基于FMDB数据库操作类PYFMDB.zip

    }PYStructureType PYStructureTypeAutoInc = 0,//主键,int类型,自增 PYStructureTypePrimaryInt = 1,//主键,int类型,自增 PYStructureTypePrimaryText = 2,//主键,text类型 PYStructureTypeNormalInt = 3,/...

    MyBatis-Plus入门.pdf

    同时,MyBatis-Plus支持多达四种主键策略,包括分布式唯一ID生成器Sequence,这使得在分布式系统中生成唯一主键成为可能。 MyBatis-Plus还支持ActiveRecord模式,这是Rails框架中的一种对象关系映射(ORM)技术。...

Global site tag (gtag.js) - Google Analytics