`
yangzhihuan
  • 浏览: 168279 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

命名时请留意Rails下的关键字

阅读更多
前些天我在做一个支付集成的接口,对方返回的结果串里面有一个 errors 的字段,用来记录出错时候的错误代码,我需要对结果进行保存,当时我也没多想,直接建了一个model用来保存返回的结果,为了方便容易记,而且可以用一些动态的方法来对返回的串给model做一些动态的赋值,所以model的字段名直接跟返回的结果串中的字段同名.

就因为这个 errors ,又导致了一个杯具的发生.因为在ActiveRecord中有一个叫做 errors 的Hash用来保存 ActiveRecod 验证时的出错信息,很多方法都会对 errors.empty? 做判断来决定是否操作成功的,比如 save 方法.

就因为我用了一个关键字作为字段,结果这个model无论如何也是保存不了,总是报错,提示是String对象没有clear方法,后来跟踪代码,看到 ActiveRecord#valid方法里面的 errors 这才恍然大悟:

我定义的字段errors(String) 覆盖了ActiveRecord类的errors(Hash).

记得我初学rails的时候,做一个评论/回复功能的时候,回复对应的model 直接叫做response,又是一个杯具,可惜我前些天都忘记了这些血的教训.

rails的api中使用了很多常用的英语作为方法名,属性名,一方面我们非常容易使用,但是另一方面也会导致像我遇到的这中杯具的发生,所以在命名的时候要对关键字多留一个心眼.

对方法/变量的命名是一个永恒的话题,没有最好的,只有最合适的,当然还得守规矩,比如不要使用关键字.
1
0
分享到:
评论
3 楼 夜鸣猪 2010-01-25  
星情泪 写道
现在做字段设计的时候name, date这些直观又简短的单词都不敢用了,保不准什么时候出来个冲突

嗯 view的时候 display
process
2 楼 yangzhihuan 2010-01-25  
命名是一件很苦恼的事情.
1 楼 星情泪 2010-01-24  
现在做字段设计的时候name, date这些直观又简短的单词都不敢用了,保不准什么时候出来个冲突

相关推荐

    关于rails 3.1 cucumber-rails 1.2.0

    Rails 3.1 和 Cucumber-Rails 1.2.0 是两个在Web开发领域非常重要的工具,尤其对于Ruby on Rails框架的测试和自动化流程。本文将深入探讨这两个组件,以及它们如何协同工作来增强软件开发的效率和质量。 首先,...

    使用Aptana+Rails开发Rails Web应用(中文)

    在开发Web应用时,Ruby on Rails(简称Rails)框架因其高效、简洁的代码风格和强大的社区支持而备受青睐。Aptana是一款强大的集成开发环境(IDE),尤其适用于Rails项目的开发,它提供了丰富的特性来提升开发效率。...

    Rails 101 入门电子书

    ### Rails 101 入门电子书知识点详解 #### 一、简介 《Rails 101 入门电子书》是一本非常适合初学者直接入门的书籍,它由xdite编写并出版于2014年6月10日。本书主要针对的是希望学习Ruby on Rails框架的读者,特别...

    Rails项目源代码

    Ruby on Rails,通常简称为Rails,是一个基于Ruby编程语言的开源Web应用框架,遵循MVC(Model-View-Controller)架构模式。这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何...

    Rails101_by_rails4.0

    随着Rails版本的更新迭代,此书聚焦于一个特定的版本,帮助开发者掌握在Rails 4.0环境下开发应用所需的关键技能。 书中介绍了Ruby on Rails安装的最佳实践,以及如何通过Git、编辑器和Linux命令行等前置技能的学习...

    rails指南 中文版

    5. **Gemfile与Bundler**:Rails项目通常使用Gemfile来管理依赖库,Bundler工具则用于安装和管理这些依赖,确保在不同环境下项目的运行一致性。 6. **Scaffolding**:Rails提供了快速生成基本CRUD(Create, Read, ...

    Rails下运行PHP程序Phuby.zip

    项目的地址在https://github.com /tenderlove/phuby,尽管项目主持人Aaron发布了几个视频去证明phuby能让php在Rails下运行,但实际上在Rails社区 中,估计phuby也只是一个实验品而已。 标签:Phuby

    Ruby on Rails Guides v2 - Ruby on Rails 4.2.5

    - **升级**:当需要更新到Rails的最新版本时,可以使用`bundle update rails`命令来更新依赖。 - **回滚**:如果更新后出现问题,可以通过`git`命令或者手动修改`Gemfile`来回滚到之前的版本。 #### 六、添加第二个...

    RAILS2.1的中文版资料

    为了确保数据的一致性和准确性,Rails 2.1现在支持基于协调世界时(UTC)的数据库迁移。这种改进有助于避免因不同的服务器时区设置而引起的潜在问题。 **更好的缓存机制(Better caching)** Rails 2.1改进了其...

    rails api(文档)

    5. **版本控制**:API的版本控制很重要,Rails API允许你为不同版本的API创建独立的命名空间,确保向后兼容性。 6. **错误处理**:Rails API鼓励返回标准的HTTP状态码和结构化的错误消息,以便客户端可以理解并适当...

    The Rails 4 Way

    - **命名路由**:允许开发者通过名字引用路由,使得代码更具可读性,并且可以在路由规则改变时自动更新所有引用该路由的地方。 - **资源路由**:专门为CRUD操作设计的路由规则,简化了控制器和视图的创建过程。 **3...

    rails2-sample

    从给定的文件信息来看,我们正在探讨的是一本关于Ruby on Rails的书籍,书名为《Simply Rails2》,作者是Patrick Lenz。本书旨在为初学者提供深入理解Ruby on Rails框架的指南,从基础概念到高级主题均有涵盖,是...

    Advanced Rails

    1. **优化性能**:Rails应用在处理大量请求时可能会面临性能挑战。书中会介绍如何通过缓存(如Action Cache和Page Cache)、数据库查询优化、资产管道优化等手段提升应用性能。 2. **复杂的路由**:Rails的路由系统...

    Ruby on Rails Tutorial

    David Heinemeier Hansson 就是看重了这一点,才在开发 Rails 框架时选择了 Ruby。Rails 常被称作 Ruby on Rails,它让 Web 开发变得从未这么快速,也从未如此简单。在过去的几年中,《Ruby on Rails Tutorial》这...

    ruby on rails 开发环境包(ruby1.8.7,rails2.2.3)

    在使用这个开发环境包时,开发者可以开始构建基于Rails的Web应用,遵循以下步骤: 1. **安装Ruby**:首先,你需要在你的系统上安装Ruby 1.8.7。这可以通过Ruby版本管理器如RVM(Ruby Version Manager)或者rbenv来...

    Rails

    标题 "Rails" 指的是 Ruby on Rails,一个开源的Web应用程序框架,它基于Ruby编程语言,遵循MVC(模型-视图-控制器)架构模式。Rails由David Heinemeier Hansson在2004年创建,其设计理念是强调代码的简洁性、DRY...

    Rails recipes

    特别是在Rails社区快速发展,各种新技术和概念层出不穷的背景下,这本书为开发者提供了一个宝贵的参考,帮助他们保持技能的前沿性和实战性。 由于本书内容的专业性和实用性,读者在阅读时可能会遇到一些技术术语或...

    Rails3常用命令行命令

    Rails3 是 Ruby on Rails ...熟练掌握这些命令,将极大地提高你的开发效率,使你在构建Ruby on Rails应用时更加得心应手。记住,实践是学习的最佳途径,尝试在实际项目中运用这些命令,你将更加熟悉Rails的工作流程。

    Ruby on Rails安装指南(Ruby 1.8.6+Rails 2.0.2)

    Ruby on Rails 安装指南 Ruby on Rails 安装指南是指安装 Ruby 1.8.6 和 Rails 2.0.2 的详细步骤。首先,需要下载 Ruby One-Click Installer 版本,并安装 Ruby。然后,下载 Rails 2.0.2 版本,并安装。接下来,...

Global site tag (gtag.js) - Google Analytics