`
酷的飞上天空
  • 浏览: 521875 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
社区版块
存档分类
最新评论

Rails 多表关联查询指定字段的方法

阅读更多

Rails中都是返回的单个模型的对象,怎么返回多个表中的指定字段则没做什么介绍。

 

在实际的工作中不可能只是返回单个表的模型,于是GOOGLE下,发现find_by_sql方法的返回中已经包含了查询的字段信息。

 

table A
id Integer
name String

table B
id Integer
age Integer
a_id Integer

@as = A.find_by_sql("select a.name,b.age from A a,B b where a.id = b.a_id")

puts @as.class #Array
puts @as[0].class #A

puts @as[0].inspect # #<A name:\"test\">

puts "name:" << @as[0].name # test
puts "age:" << @as[0].age   # 11

#虽然查询结果类型是A,但仍然可以直接调用类型A中没有的age方法取得值

 

这样就可以不用受到单个模型类的约束,自由使用sql语句。

而返回结果列表中的单个元素作为一个map对象进行取值。

 

分享到:
评论

相关推荐

    Ruby on Rails Guides v2 - Ruby on Rails 4.2.5

    - **作用**:通过Active Record,开发者可以直接在模型类中定义数据表的字段和关系,而无需编写复杂的SQL查询语句。 #### 二、验证 - **定义**:验证是在保存数据之前对模型进行检查的过程,确保数据符合预期的...

    Ruby on Rails 指南 v5.0.1 中文版

    - **联结表**:讲解如何处理多对多关联关系。 - **及早加载关联**:介绍如何预先加载关联对象以避免N+1查询问题。 - **作用域**:解释如何定义作用域来封装常用的查询逻辑。 - **动态查找方法**:介绍如何使用动态...

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

    本文将深入探讨"Ruby-Annotate"工具,这是一个用于Rails项目的实用程序,能够自动为你的模型添加注释,显示有关数据库模式、关联和路由的信息。 **Ruby-Annotate** 是一个Ruby gem,它的主要功能是分析你的Rails...

    rails有用的命令

    `rails g migration AddColumnToTableName column_name:type`会生成一个新迁移,添加指定列到指定表。 9. **Scaffold**: - `rails generate scaffold Product title:string description:text image_url:string`:...

    Ruby-SimpleForm轻松处理Rails表单

    默认情况下,Simple Form会自动覆盖Rails的`form_for`方法。 2. **基本使用** Simple Form使用`simple_form_for`辅助方法代替`form_for`,它能生成更加简洁的代码。例如,创建一个基于模型的表单,只需一行代码: ...

    ruby on rails 实例代码

    此外,Rails提供了强大的关联功能,如一对一(has_one)、一对多(has_many)、多对多(has_and_belongs_to_many)等,允许我们轻松处理复杂的数据关系。例如,一个用户可以有多个帖子(posts): ```ruby class ...

    Ruby-ActsAsTennant通过一个共享数据库的策略来为一个Rails应用添加多租户支持

    标题中的“Ruby-ActsAsTennant”是一个用于Ruby on Rails框架的库,它提供了多租户支持。在多租户架构中,一个单一的应用程序可以服务于多个独立的客户(称为租户),每个租户的数据被隔离,彼此不可见。Acts As ...

    rails2.0下实现《rubyonrails》中的mybook实例

    这里的`database`字段指定了SQLite数据库文件的位置,Rails会在指定的目录下自动创建或使用这些文件。 3. **创建数据库和迁移**:运行以下命令初始化数据库结构: ``` bundle exec rake db:create bundle exec ...

    rails 文件上传

    - `rails db:storage:prepare`命令用于准备数据库表以存储文件元数据。 - `rails active_storage:verify_integrity`检查存储的文件完整性。 总的来说,“rails 文件上传”这篇博客可能详细讲解了如何在Rails项目...

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

    19.2 在模型对象中指定关联 267 19.3 belongs_to和has_xxx声明 268 19.4 连接多张表 280 19.5 自引用的连接 287 19.6 Acts As 288 19.7 何时保存 291 19.8 预先读取子记录 292 19.9 计数器 293 第20章 ActiveRecord...

    ruby on rails中Model的关联详解

    1. **`:through =&gt; :lessons`**:定义了一个学生通过 `lessons` 关联表与教师建立多对多的关联关系。同理,教师也通过相同的关联表与学生建立关系。 2. **访问关联对象**: ```ruby # 获取第一位学生的所有老师 ...

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

    为了使这个功能更完整,我们还需要在Rails控制器中添加相应的方法来处理这些请求。例如,`province_cities`行动可以返回指定省份的所有城市,而`city_areas`行动则返回指定城市的所有区县。这些数据可以通过...

    Ruby on Rails框架程序连接MongoDB的教程

    在Ruby on Rails开发中,有...在实际开发中,你可能需要根据项目需求扩展模型,添加更多的字段、关联和其他功能。记得,MongoMapper提供了一套与Active Record类似的API,使得从关系型数据库迁移到NoSQL变得更加平滑。

    Java敏捷持久层-ROR-ActiveRecord持久层框架的Java实现

    3. 关联映射:支持一对多、一对一、多对多等复杂的数据库关联关系,通过定义对象之间的关联,可以方便地进行关联查询。 4. 动态查询:允许开发者使用类似Java的方法调用来构建复杂的查询条件,无需拼接SQL字符串。 5...

Global site tag (gtag.js) - Google Analytics