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

rails on rails 的(自定义)主键和唯一索引

阅读更多

ruby的自定义主键

问了许多高手都说 不建议自定义主键  这样写:

create_table :posts , :primary_key => 'userid' do |t|

 但是生成的主键仍是自增的ID 和ruby的功能主键一样

后来看到了mysql_adapter.rb这个文件,

....
      def native_database_types #:nodoc:
        {
          :primary_key => "int(11) DEFAULT NULL auto_increment 
PRIMARY KEY",
          :string      => { :name => "varchar", :limit => 255 },
          :text        => { :name => "text" },
          :integer     => { :name => "int"},
          :float       => { :name => "float" },
          :decimal     => { :name => "decimal" },
          :datetime    => { :name => "datetime" },
          :timestamp   => { :name => "datetime" },
          :time        => { :name => "time" },
          :date        => { :name => "date" },
          :binary      => { :name => "blob" },
          :boolean     => { :name => "tinyint", :limit => 1 }
        }
      end
...

 它的主键都是这样定义好的(所以说不建议你自定义主键)

那也许你有很多问题:如一个用户登陆的userid 之类的怎么办

其实你可以创建索引

add_index "admin", ["userid"], :userid=> "userid", :unique => true 

 

千万不要这样写:

  t.string :userid ,:unique => true

 

这样写不会报错但不会达到预期的效果

你也可以在model层添加这样一句:

validates_uniqueness_of :userid

但是为了安全个人觉得还是在数据表中加上索引还是必须的

分享到:
评论

相关推荐

    RubyonRails之Oracle应用_简易教程.doc

    Ruby on Rails(简称Rails)是一个基于Ruby编程语言的开源Web应用程序框架,专注于简洁和生产力。它遵循模型-视图-控制器(MVC)架构模式,使得开发快速、高效的Web应用变得简单。Rails的核心理念是“约定优于配置”...

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

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

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

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

    博客系统项目代码

    数据库设计包括表格(或集合)结构、主键、外键、索引等,确保数据的一致性和高效查询。 4. **用户认证与授权**:为了保护用户数据,系统会实现用户身份验证(如OAuth2、JWT)和权限控制(如RBAC,角色基础访问控制...

    database_consistency:查找模型架构和数据库约束之间不一致的工具

    我们可以: 查找缺少的空约束( ) 查找缺少的长度验证( ) 查找缺少的状态验证( ) 查找缺少的唯一性验证( ) 为BelongsTo关联查找丢失的外键( ) 查找缺少的唯一索引以进行唯一性验证( ) 查找HasOne和Has...

    P2PMoney:软件架构大作业 - P2P贷款平台系统

    数据库设计涉及到表结构的设计、数据类型的选取、主键和外键的设置,以及相关的索引优化策略。理解这些数据模型可以帮助我们更好地分析和维护系统的数据流转。 **四、认证与授权** 为了确保用户安全,P2PMoney会...

    Ruby-Autogeneratecode一款命令行数据模型代码生成器

    开发者可以通过自定义 `config.gen` 文件,根据项目需求调整生成的代码结构,使代码更符合项目规范和设计模式。在 Ruby 开发环境中,这样的工具无疑提升了开发体验,降低了出错的可能性,值得在实际工作中探索和使用...

    image_posting

    首先,我们要理解Ruby是一种动态类型的编程语言,常用于Web开发,特别是与Ruby on Rails框架结合时。Ruby on Rails提供了一种简洁、高效的开发方式,它内置了对数据库操作的支持,使用ActiveRecord作为ORM(对象关系...

    database-course-lab3:实验室 3

    2. **数据库设计**:理解实体关系模型(ER模型)和关系数据模型,包括键的概念(主键、外键)、数据完整性和约束。良好的数据库设计能确保数据的一致性和准确性。 3. **索引与查询优化**:学习如何为数据库表添加...

    最新秋招freewheeljava笔试题.docx

    3. **索引**:主键、WHERE句中字段和外键适合建立索引,以提高查询速度。答案是A、B、C。 4. **TCP拥塞控制**:TCP的拥塞控制使用加性增、乘性减算法。答案是C。 5. **IP地址**:205.0.35.26不属于私有IP地址范围,...

    PGSQL常见的问题

    使用`serial`或`bigserial`类型可以自动生成递增的序列号,适用于主键或其他需要唯一标识的场景。 #### 37. 我如何获得一个插入的序列号的值? 使用`currval()`函数可以返回最后生成的序列号值,但在并发环境中...

    W5D2:W5D2课堂作业-SQL Zoo

    10. Ruby on Rails中的SQL操作:Ruby的ActiveRecord库是Ruby on Rails框架的一部分,它提供了一种面向对象的方式来操作数据库,使得开发者可以通过Ruby代码执行SQL命令。 在这个作业中,学生可能会学习如何使用SQL...

    JAVA上百实例源码以及开源项目源代码

    日历表格面板 [ConfigLine.java] 控制条类 [RoundBox.java] 限定选择控件 [MonthMaker.java] 月份表算法类 [Pallet.java] 调色板,统一配色类 Java扫雷源码 Java生成自定义控件源代码 2个目标文件 Java实现HTTP连接...

Global site tag (gtag.js) - Google Analytics