`
roreric
  • 浏览: 3304 次
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

ActiveRecord中设置字段默认值的方法

    博客分类:
  • RoR
阅读更多
想做一个Event的记录
先建立了一个scaffold
rails g scaffold Event name:string description:text status:string
之后
rake db:migrate
然后修改controllers/events_controller.rb
增加
validates :name,:status :presence => true
让name和status必输
然后想让status默认都是Y
这时候问题来了,刚才忘记在建migration里面把数据库里status的字段默认值设置成Y了
找到几个选择
1.新增一个migration或者db直接操作(不推荐),为status加上默认值
2.在model里after_initialize加一个方法
  after_initialize :default_values
  def default_values
    self.status ||= 'Y'
  end
3.这个比较无敌,有一个gem
https://github.com/FooBarWidget/default_value_for

最后选择了方法2~
1
7
分享到:
评论
1 楼 sucreat 2015-05-07  
使用第二种方法,如果是单纯的查询,会导致调用该方法将原来的值替换掉。

相关推荐

    Ruby-Settingsforclassesbackedbyadatabasewithdefaults

    默认值的概念可以通过添加一个`default_value`字段来实现,这样即使数据库中没有对应的设置记录,也可以返回一个预设值。 ```ruby class Setting < ActiveRecord::Base validates :key, presence: true, ...

    使用mybatis-plus的insert方法遇到的问题及解决方法(添加时id值不存在异常)

    这个问题通常是由于 MyBatis-Plus 自动为实体类中的 `id` 字段生成默认值,而这个默认值与数据库中的字段类型不匹配导致的。 首先,我们需要理解 MyBatis-Plus 的 `insert` 方法的工作原理。默认情况下,MyBatis-...

    thinkphp3.0完全中文开发手册

    - **字段属性设置**:可以设置字段的类型、长度等属性。 **6.4 数据主键** - **主键设置**:设置数据表的主键字段。 **6.5 属性检索** - **属性读取**:获取模型对象中的属性值。 **6.6 跨库操作** - **多...

    pg_party:ActiveRecord PostgreSQL分区

    创建临时分区和获取分区元数据的模型方法局限性分区表在db/schema.rb表示不正确-请使用:sql模式格式未来的工作自动分区创建(通过cron或其他方式)安装将此行添加到您的应用程序的Gemfile中: gem 'pg_party' 然后...

    Rails for Zombies

    通过"Rails for Zombies"教程,学习者能够对Ruby on Rails框架中的基本概念、数据结构、数据库操作方法、对象属性的访问方式等有一个全面而深入的理解,并能够运用这些知识点来创建基本的Web应用程序。

    simple_enum:对ActiveModel的简单枚举式字段支持(包括验证和i18n)

    ActiveRecord和Ruby的枚举类字段不引人注目,为ActiveRecord和Mongoid模型(为Rails 4+构建)带来了枚举功能。 从2.0版开始,simple_enum不再与Rails 3.x或Ruby 1.8兼容,请改用1.6版: : 注意:最近在github上...

    Laravel开发-eloquent-model-generator

    使用这个工具,开发者只需要执行命令,就可以自动生成包含所有字段的模型,包括字段类型、长度、默认值等属性,以及相应的getter和setter方法。这样,开发者可以将精力集中在业务逻辑上,而不是编写基础的数据库模型...

    ThinkPHP3.0_完全开发手册(1).pdf

    字段映射可以将模型中的字段与数据库中的字段进行一一对应。 **6.12 连贯操作** 连贯操作允许在一次调用中执行多个数据库操作。 **6.13 CURD 操作** CURD 操作指的是 Create(创建)、Update(更新)、Read...

    ThinkPHP3.0_完全开发

    - **字段排除**:在查询和更新操作中排除某些字段,保护敏感数据。 - **事务支持**:支持数据库事务,确保操作的原子性和一致性。 - **高级模型**:介绍一些进阶的模型功能,如事件触发、行为扩展等。 - **视图...

    Ruby on Rails迁移时的一些注意事项

    在设计数据库时,避免在表中直接设置默认值。这是因为默认值通常可以通过模型层来实现,这样更灵活且易于维护。例如,如果有一个`amount`字段,可以定义一个方法来处理默认值: ```ruby def amount self[:amount] ...

    tp框架手册开发

    - **获取字段**:获取表中的字段信息。 - **属性访问**:通过模型对象访问数据库表中的数据。 - **跨库操作**:在一个模型中同时操作多个数据库。 - **连接数据库**:建立与数据库的连接。 - **切换数据库**:在应用...

    Scala程序设计(第2版)

    19.1 一个较为激进的示例:Ruby on Rails框架中的ActiveRecord库 396 19.2 使用动态特征实现Scala 中的动态调用 397 19.3 关于DSL的一些思考 402 19.4 本章回顾与下一章提要 402 第20章 Scala的领域...

    ThinkPHP3.0 RC2完全开发手册pdf版

    - **获取URL参数**:从URL中获取参数,支持默认值设置和类型转换。 - **AJAX返回**:在AJAX请求中返回JSON格式的数据,便于前端处理。 #### 六、模型层详解 模型层是ThinkPHP处理数据的核心,负责与数据库的交互,...

    简单介绍Ruby on Rails对PostgreSQL数组类型的支持

    为数组类型的字段设置默认值时,应使用PostgreSQL的内建语法。如想将默认值设为空数组,可以使用`:default => '{}'`。例如: ```ruby create_table :table_with_arrays do |t| t.integer :int_array, :array => ...

    Ruby-Annotate注释Rails类模式和路由信息

    这些注释包含关于模型字段的数据类型、长度、默认值以及是否允许为空等信息。这极大地提高了代码的可读性,特别是当你接手别人的项目或者长时间未接触某个项目时,可以帮助你快速理解模型与数据库之间的关系。 安装...

    thinkphp3.2离线文档

    - **字段定义**: 定义模型中的字段。 - **连接数据库**: 数据库连接的配置。 - **切换数据库**: 在多个数据库之间切换。 - **分布式数据库支持**: 支持跨数据库的操作。 - **连贯操作**: - **WHERE**: 条件查询。 ...

    Java鼠标界面跳转源码-awesome-ruby-toolbox:来自www.ruby-toolbox.com的一组很棒的Ruby库,删除了

    活动记录默认值 活动记录枚举 - 具有 I18n 和 ActiveRecord/Mongoid/MongoMapper 支持的枚举属性 - 为 ActiveRecord、ActiveModel 和 Mongoid 模型提供类似枚举的字段。 - 具有一些神奇力量的 Ruby 枚举! 活动记录...

Global site tag (gtag.js) - Google Analytics