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对象进行取值。
分享到:
相关推荐
- **作用**:通过Active Record,开发者可以直接在模型类中定义数据表的字段和关系,而无需编写复杂的SQL查询语句。 #### 二、验证 - **定义**:验证是在保存数据之前对模型进行检查的过程,确保数据符合预期的...
- **联结表**:讲解如何处理多对多关联关系。 - **及早加载关联**:介绍如何预先加载关联对象以避免N+1查询问题。 - **作用域**:解释如何定义作用域来封装常用的查询逻辑。 - **动态查找方法**:介绍如何使用动态...
本文将深入探讨"Ruby-Annotate"工具,这是一个用于Rails项目的实用程序,能够自动为你的模型添加注释,显示有关数据库模式、关联和路由的信息。 **Ruby-Annotate** 是一个Ruby gem,它的主要功能是分析你的Rails...
`rails g migration AddColumnToTableName column_name:type`会生成一个新迁移,添加指定列到指定表。 9. **Scaffold**: - `rails generate scaffold Product title:string description:text image_url:string`:...
默认情况下,Simple Form会自动覆盖Rails的`form_for`方法。 2. **基本使用** Simple Form使用`simple_form_for`辅助方法代替`form_for`,它能生成更加简洁的代码。例如,创建一个基于模型的表单,只需一行代码: ...
此外,Rails提供了强大的关联功能,如一对一(has_one)、一对多(has_many)、多对多(has_and_belongs_to_many)等,允许我们轻松处理复杂的数据关系。例如,一个用户可以有多个帖子(posts): ```ruby class ...
标题中的“Ruby-ActsAsTennant”是一个用于Ruby on Rails框架的库,它提供了多租户支持。在多租户架构中,一个单一的应用程序可以服务于多个独立的客户(称为租户),每个租户的数据被隔离,彼此不可见。Acts As ...
这里的`database`字段指定了SQLite数据库文件的位置,Rails会在指定的目录下自动创建或使用这些文件。 3. **创建数据库和迁移**:运行以下命令初始化数据库结构: ``` bundle exec rake db:create bundle exec ...
- `rails db:storage:prepare`命令用于准备数据库表以存储文件元数据。 - `rails active_storage:verify_integrity`检查存储的文件完整性。 总的来说,“rails 文件上传”这篇博客可能详细讲解了如何在Rails项目...
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...
1. **`:through => :lessons`**:定义了一个学生通过 `lessons` 关联表与教师建立多对多的关联关系。同理,教师也通过相同的关联表与学生建立关系。 2. **访问关联对象**: ```ruby # 获取第一位学生的所有老师 ...
为了使这个功能更完整,我们还需要在Rails控制器中添加相应的方法来处理这些请求。例如,`province_cities`行动可以返回指定省份的所有城市,而`city_areas`行动则返回指定城市的所有区县。这些数据可以通过...
在Ruby on Rails开发中,有...在实际开发中,你可能需要根据项目需求扩展模型,添加更多的字段、关联和其他功能。记得,MongoMapper提供了一套与Active Record类似的API,使得从关系型数据库迁移到NoSQL变得更加平滑。
3. 关联映射:支持一对多、一对一、多对多等复杂的数据库关联关系,通过定义对象之间的关联,可以方便地进行关联查询。 4. 动态查询:允许开发者使用类似Java的方法调用来构建复杂的查询条件,无需拼接SQL字符串。 5...