一.创建两个表:
CREATE TABLE category (
id INT NOT NULL AUTO_INCREMENT,
category_name VARCHAR(255) NOT NULL,
PRIMARY KEY(id)
)
CREATE TABLE grp (
id INT NOT NULL AUTO_INCREMENT,
category_id INT NOT NULL,
grp_name VARCHAR(255) NOT NULL,
PRIMARY KEY(id),
INDEX idx_grp_category_id(category_id)
)
二.定义关系:
class Category < ActiveRecord::Base
has_many :grp
has_many :i_grp, :class_name => 'Grp', :limit=>5
end
class Grp < ActiveRecord::Base
belongs_to :category
end
定义i_grp的是为了满足需求取每个category下的grp,最多5个
三.做测试,定义fixtures(category为1的grp共有6个):
one:
id: 1
category_name: a
two:
id: 2
category_name: b
one:
id: 1
category_id: 1
grp_name: a
two:
id: 2
category_id: 1
grp_name: b
three:
id: 3
category_id: 1
grp_name: c
four:
id: 4
category_id: 1
grp_name: d
five:
id: 5
category_id: 1
grp_name: e
six:
id: 6
category_id: 1
grp_name: f
四.写测试类
category_test.rb
class CategoryTest < Test::Unit::TestCase
fixtures :category,:grp
def test1
category = Category.find(1)
p 'no include category.i_grp.size = ' + category.i_grp.size.to_s
category2 = Category.find(1,:include=>'i_grp')
p 'has include category.i_grp.size = ' + category2.i_grp.size.to_s
end
end
打印出来的结果如下:
"no include category.i_grp.size = 5" --》期望的结果
"has include category.i_grp.size = 6" --》非预期的结果
为什么会出现这种情况,去看看日志test.log
Nov 06 10:35:20 13cc97e4810e43f rails[3044]: [4;35;1mCategory Load (0.016000)[0m [0mSELECT * FROM category WHERE (category.`id` = 1) [0m
Nov 06 10:35:20 13cc97e4810e43f rails[3044]: [4;36;1mGrp Columns (0.000000)[0m [0;1mSHOW FIELDS FROM grp[0m
Nov 06 10:35:20 13cc97e4810e43f rails[3044]: [4;35;1mSQL (0.000000)[0m [0mSELECT count(*) AS count_all FROM grp WHERE (grp.category_id = 1) [0m
Nov 06 10:35:20 13cc97e4810e43f rails[3044]: [4;36;1mCategory Load Including Associations (0.000000)[0m [0;1mSELECT category.`id` AS t0_r0, category.`category_name` AS t0_r1, grp.`id` AS t1_r0, grp.`category_id` AS t1_r1, grp.`grp_name` AS t1_r2 FROM category LEFT OUTER JOIN grp ON grp.category_id = category.id WHERE (category.`id` = 1) [0m
用了include语句后 model中定义的:limit=>5会失效.
实际上你会发现,不仅:limit会失效,如果加入其他参数如 :order, :offset等都会失效
分享到:
相关推荐
这是为Rails 5和6提供自定义400/500异常页面的唯一*宝石*当前0.8.0.0(2018年8月):memo:简介-:warning:安装-:wrench:配置-:telephone:支持-:star:Changelog:memo:简介ExceptionHandler用动态视图替换Rails的默认...
拥有290,000多个下载量,这是*唯一* gem,可为Rails 5和6提供自定义的400/500异常页面 当前 (2018年8月) :memo: - :warning_selector: - :wrench: - :telephone_selector: - :white_medium_star: :memo: 介绍 ...
Rails::API 是 Rails 的精简版本,针对不需要使用完整 Rails 功能的开发者。 Rails::API 移除了 ActionView 和其他一些渲染功能,不关心Web前端的开发者可更容易、快速地开发应用程序,因此运行速度比正常的 Rails ...
如果不是,就会向`input_array`的错误集合中添加一条消息。 在实际应用中,`predefined_array`可能是从数据库查询得到的,或者是硬编码的。为了使代码更具可读性和可维护性,我们可以将预定义数组移到类的外部,...
Rails :: Bootstrap :: Toggle :: Buttons 这款宝石旨在提供捆绑在简单宝石中的靴子。 安装 将此行添加到您的应用程序的Gemfile中: gem 'rails-bootstrap-toggle-buttons' 然后执行: $ bundle 或将其自己安装...
Ruby on Rails,简称Rails,是基于Ruby语言的一个开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在使Web开发过程更加高效、简洁。本压缩包中的"Ruby on Rails入门经典代码"提供了新手学习...
Ruby on Rails,简称Rails,是由David Heinemeier Hansson创建的一个开源Web应用程序框架,它基于MVC(模型-视图-控制器)架构模式,用于快速开发动态网站。Rails以其“约定优于配置”(Convention Over ...
标题 "rails-development-environment-master.rar" 暗示这是一个关于Ruby on Rails开发环境的压缩包。Rails是基于Ruby语言的一个开源Web应用框架,遵循MVC(Model-View-Controller)架构模式,广泛用于构建数据库...
[omancipator/rails-ng-foundation-seed 的代码状态]( )开始使用Rails的,AngularJS,基金会和Heroku的 这是一个带有 rails 项目的种子库,其中包含正确的 gem,可以使用基础和 angularjs 在 heroku 上启动和运行无...
Rails-on-ecs-terraform AWS ECS上的Terraform for Rails代码。 Rails资料库: KMS的秘密用KMS密钥加密。 $ aws kms encrypt --key alias/terraform --plaintext " secret_value " --output text --query ...
rails5-docker-alpine:使用Alpine Linux的Rails轻量级Docker开发环境
在Rails项目中简单使用github action信息网路:Rails 6.0.0 数据库:PostgreSQL 测试:Rspec笔记# initialize Rails apprails new rails-github-actions-example --skip-turbolinks --skip-spring --database=...
在没有RVM或rbenv的Ubuntu 14.04上的Rails,PostgreSQL带Passenger + Nginx ssh-copy-id -i ~/.ssh/id_rsa.pub root@SERVER scp rails-passenger-postgres-nginx root@SERVER:/root/rails-passenger-postgres-...
webpack-rails-demo 该存储库演示了Rails 4.2应用程序中基本用法。 尽管它演示的WebPack护栏与链轮共存,链轮不需要或的WebPack护栏使用。 用法 git clone https://github.com/mipearson/webpack-rails-demo.git ...
Rails-API-React-Tutorial :laptop: 嘿! 这是一个非常容易遵循的Rails / React API教程,从头到尾全面深入。 本指南向您展示如何通过create-react-app将Ruby on Rails 5 API与React JS一起安装以及如何连接前端和...
《Rails初学者指南》是一本专为初学者设计的Rails框架学习资源,旨在帮助初学者快速入门Web开发,并以清晰的概念和紧凑的结构,掌握Rails的基础和进阶知识。 本书首先介绍了Rails框架的基本概念,包括Active Job的...
《Rails构建测试源码解析》 Rails,全称Ruby on Rails,是一款基于Ruby语言的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,旨在提高开发效率和代码的可读性。在"rails-builds-test-源码.rar"这个...
适用于JavaScript的Ruby on Rails i18n 该gem通过Rack中间件公开您的JSON序列化翻译,以便将它们与JavaScript结合使用。 安装 此宝石正在开发中,这些步骤可能会更改 # Gemfile gem 'rails-i18n-js', :git => '...
使用docker机器为此Rails API应用程序创建一个新的单节点环境。 使用docker和docker compose在新环境上构建并运行API应用 经过测试 macOS-10.12 码头工人-1.13.0 Docker撰写-1.10.0 在本地运行此应用程序 git ...