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

再发一些rails和数据库有意思的问题和意见

阅读更多

1. 数据库查询

 

    people = Person.find(:all, :joins => "INNER JOIN accounts ON people .id = accounts.person_id",

               :conditions => "people .gender = 'male' AND accounts.number < 10",

               :select => "*")

 

    有啥问题?

 

    如果people表和accounts表有一个相同name的column,取得的people需要reload一下才能用,不然使用时取不到那个字段的值。这是由于查询时的 ambiguous field问题引起的。

 

    如何解决?

 

    people = Person.find(:all, :joins => "INNER JOIN accounts ON people.id = accounts.person_id",

               :conditions => "people.gender = 'male' AND accounts.number < 10",

               :select => "people. *")

 

2. 关联表

 

    项目开发到后期,往往会发现关联表因为汇聚越来越多的有用信息,需要实现成model。所以项目刚开始就给关联表加上id吧。

 

 

分享到:
评论
3 楼 andyhu1007 2008-08-09  
刑天战士 写道
还有,person的复数是people,谢谢!


谢谢提醒,因为是随便写了一段代码举个例子,没注意,改了。


2 楼 neodoxy 2008-08-09  
include遇到大表也很慢,大多数情况下拆分成几次小查询性能更好
1 楼 刑天战士 2008-08-09  
为什么要用inner join而不用:include?如果不是速度很漫的话,:include可以完全胜任。照你这么做,每次reload,d典型的n+1问题。inner join会不会这样忘了,机器刚重装,一会弄个mysql试试

还有,person的复数是people,谢谢!

相关推荐

    rails和mysql数据库连接中出现的问题以及解决办法

    然而,有时在尝试连接Rails应用到MySQL数据库时,可能会遇到一些问题。本篇文章将深入探讨这些常见问题及其解决方案。 首先,Rails与MySQL的连接问题可能源于配置不正确。在`config/database.yml`文件中,你需要...

    Ruby on Rails:数据库设计与迁移教程.docx

    Ruby on Rails:数据库设计与迁移教程.docx

    Ruby on rails 数据库详细配置

    总的来说,配置Ruby on Rails的数据库涉及到安装必要的数据库驱动和Rails框架,然后在`database.yml`文件中正确设定数据库连接参数。理解这个过程对于开发基于Rails的应用程序至关重要,因为这使得Rails能够与各种...

    labrador, Rails 开发数据库的忠实数据检索器.zip

    labrador, Rails 开发数据库的忠实数据检索器 v0.2.1用于 Rails 开发数据库的忠实数据库( 未知) 客户端。安装拉布拉多可以通过一个聚合 shell 命令的单一拷贝来安装。 详细说明可以在拉布拉多网站的主页上找到。插件...

    Ruby on Rails安装及MySQL数据库配置指南

    在安装和配置 Ruby on Rails 和 MySQL 数据库的过程中,可能会遇到一些问题。例如,在创建 POSTS 应用时可能会遇到问题,创建数据后数据库中有数据,但是到 Listing posts 界面无法查看,总是报错。解决方法是下载 ...

    使用Rails 数据库DSL与PHP协作开发 - 色色

    8. **错误处理和日志记录**:在两个不同语言的环境中,如何有效地进行错误处理和日志记录,确保问题定位的便捷性。 9. **安全性**:探讨如何保护数据的安全,防止SQL注入等攻击,以及在API通信中的身份验证和授权...

    Ruby-Multiverse让Rails支持多数据库

    默认情况下,Rails仅支持单个主数据库,但Multiverse允许开发者定义和管理多个数据库,使数据分片和扩展变得更加简单。 在Rails中使用Multiverse,首先需要安装相应的gem。在Gemfile中添加`gem 'multiverse'`,然后...

    Ubuntu 11.04安装Ruby on rails 连接MySQL数据库.pdf

    通过以上步骤,你已经在Ubuntu 11.04上成功搭建了一个基于Ruby on Rails和MySQL数据库的开发环境,并创建了一个基础的Web应用。这不仅为后续的开发工作提供了便利,也加深了对Ruby on Rails框架及MySQL数据库配置的...

    Ruby-SecondBase为Rails提供双数据库无缝相集成

    "Ruby-SecondBase"就是为了解决这个问题而出现的一个库,它为Rails应用提供了无缝集成双数据库的能力。 SecondBase是专门为Rails设计的一个数据库扩展工具,它扩展了ActiveRecord的功能,使得在Rails应用中处理两个...

    Rails的中文乱码问题

    在提供的“ruby-refm.chm”文件中,可能包含了Ruby语言和相关工具的参考手册,这将有助于理解Ruby的基础语法和Rails框架的使用,包括如何处理字符串和编码问题。查阅此手册,可以找到关于字符串操作、编码转换等相关...

    Ruby-ApartmentRack和Rails应用的数据库多租户

    "Ruby-ApartmentRack和Rails应用的数据库多租户"这一主题旨在探讨如何使用Apartment gem来实现这样的功能。Apartment是Ruby社区中广泛使用的库,它为Rack(包括Rails)应用提供了简单的多租户支持。 Apartment gem...

    Ruby-RailsDBRails数据库查看器和SQL查询运行器

    Rails DB 是一个专门为Ruby on Rails框架设计的数据库查看器和SQL查询运行器。它提供了一个直观的用户界面,使得开发者可以方便地查看、管理和操作Rails应用中的数据库。这个工具极大地提升了开发效率,尤其是在处理...

    Web开发敏捷之道--应用Rails进行敏捷Web开发 之 Depot代码。

    3. **log**:日志目录,存储应用运行时的日志信息,有助于调试和问题排查。 4. **vendor**:供应商目录,通常存放第三方库或依赖,如JavaScript库、宝石(gem,Ruby的包管理器)等。 5. **config**:配置目录,...

    《web开发敏捷之道 应用rails进行敏捷web开发》(第一版)的depot源代码

    3. **ActiveRecord**:Rails中的ActiveRecord是ORM(对象关系映射)库,它允许开发者用Ruby类和对象直接操作数据库,简化了数据库交互。 4. **路由**:Rails的路由系统是连接URL与控制器动作的桥梁,定义了URL模式...

    rails3.1.0解决数据库取出来的信息编码为utf-8

    标题 "rails3.1.0解决数据库取出来的信息编码为...总之,解决Rails应用中的编码问题需要对数据库配置、模型、迁移、视图和前端资源都有深入理解,通过上述步骤,可以确保数据在存储和显示过程中保持正确的UTF-8编码。

    Rails项目源代码

    这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何利用Rails的强大功能来创建一个允许用户上传、分享和浏览图片的应用。 1. **Rails框架基础**: Rails的核心理念是DRY(Don't...

    logidze:Rails的数据库更改日志

    洛迪兹Logidze提供了使用PostgreSQL(&gt; = 9.6)时记录数据库记录...= 0.12.0)链接目录安装将Logidze添加到应用程序的Gemfile中: gem "logidze" , "~&gt; 1.0.0" 安装所需的数据库扩展并创建触发功能: bundle exec rails

    rails向导打包

    7. **Rails 命令行工具和 Rake 任务**: Rails 提供了一系列命令行工具,如 `rails server`、`rails generate` 和 `rails dbconsole`,帮助开发者快速启动、生成代码和操作数据库。Rake 是一个构建工具,用于执行任务...

    中文版rails教程

    总的来说,Ruby on Rails是一个强大的开发工具,它简化了Web应用的构建过程,让开发者可以更专注于创新和解决问题,而不是琐碎的配置和代码复写。通过深入学习和实践,你可以提升自己的技术水平,为未来的事业发展...

Global site tag (gtag.js) - Google Analytics