Rails5 Model Document
创建: 2017/06/09
更新: 2017/06/21
待完成事项: TODO
| 模型(model) | |||||||||||||||||||||||||||||||||||||||||||||||||||
| 生成 | rails generate model name field:type [...] [options]
P48 app 例子: rails g model questionnaire veryAgree:boolean agree:boolean disagree:boolean veryDisagree:boolean |
||||||||||||||||||||||||||||||||||||||||||||||||||
| 迁移文件的生成 |
和模型一起生成 rails generate model name field:type [...] 例: rails generate migration AddBirthToAuthors birth: date 生成的文件名 20180216002328_add_birth_to_authrs.rb 文件内容 #20180216002328_add_birth_to_authrs.rb class AddBirthToAuthors < ActiveRecord:: Migration[5.0] |
||||||||||||||||||||||||||||||||||||||||||||||||||
| 自带属性 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||
| rails命令行 | 命令行测试模块(model)
|
||||||||||||||||||||||||||||||||||||||||||||||||||
| 查看履历 | rails db:migrate:status ------------------------------------------------------------------------------
|
||||||||||||||||||||||||||||||||||||||||||||||||||
| 生成数据库 | rake db:create:all | ||||||||||||||||||||||||||||||||||||||||||||||||||
| 设定数据库 | rails db:migrate
|
||||||||||||||||||||||||||||||||||||||||||||||||||
| 生成并读取数据库 | rails db:setup 相当于 rails db:create:all rails db:migrate rails db:seed 或者 rails db:fixtures:load |
||||||||||||||||||||||||||||||||||||||||||||||||||
| schema来构筑数据库 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||
| seed | 初始数据来初始化(也可以用fixture)
|
||||||||||||||||||||||||||||||||||||||||||||||||||
| fixture | 测试数据来初始化(也可以用seed)
|
||||||||||||||||||||||||||||||||||||||||||||||||||
| 读取 | rails db:fixtures:load (FIXTURES=samples) |
||||||||||||||||||||||||||||||||||||||||||||||||||
| 初始化 | rails db:reset (DISABLE_DATABASE_ENVIROMENT_CHECK=1) 括号内内容是删除production模式的数据库 windows下development模式好像也要 |
||||||||||||||||||||||||||||||||||||||||||||||||||
| 删除 | rails db:drop:all (DISABLE_DATABASE_ENVIROMENT_CHECK=1) 括号内内容是删除production模式的数据库 windows下development模式好像也要 |
||||||||||||||||||||||||||||||||||||||||||||||||||
| 服务器客户端 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||
| 基本的数据检索 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 主键(key)搜索 | Class.find(keys) 返回主键所对应的数据(一对一)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 指定键搜索 | Class.find_by(key, value [,...]) 搜索指定的键对应的值 可以指定多个键来追加限制 返回找到的第一个 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 搜索不存在则创建 | Class.find_or_create_by(同上) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 复杂条件下的数据检索 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 设定基本条件式 |
Class.where(exp) ● joins/includes等关联搜索的参数写法 where(关联表格名: {关联处的搜索条件} ) cars = cars.includes(:equipment_spec).where(equipment_specs: { power_window: true })
返回找到的全部(非数组?)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 用占位符生成条件式 |
Class.where(exp [, value, ...]) 不等于是not, 只用于不是nil http://railsdoc.com/references/where
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| where的否定 | Class.where.not(...) 参数和where一样 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| or | Class.where(...).or(Class.where(...))
ModelTest.where('ap <= ?', |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 排序 | Class.where(...).order(sort)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 重排 |
Class.where(...).order(sort).reorder(sort) 写法和order一样 作用是覆盖前面的order 如果只是想清空前面的order,指定nil |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 指定读取的列 |
Class.where(...).select(cols) 默认获取所有的列, 用这个方法可以指定具体要获得的列
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 去除重复 | Class.where(...).distinct(flag) Class.select(...).distinct(flag)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 获取特定范围 | limit/offset 和order一起用才有现实意义 limit(rows) offset(off)
ModelTest.where('hp >= ? AND mp >= ? AND ad >= ?', 1000, |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 获取开头/结尾数据 | Class.first Class.last (也可以用limit(0)) 不能惰性读取,必须放在方法链最后 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 分组 | Class.where(...).group(key) 可以指定多个 :a, :b, :c, ... |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 进一步提取信息 |
Class. group (key).have(exp)
exp写法参照p206 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| select中使用SQL函数 | 例: Book.select('AVG(sample) AS avg_sample') 用AS设定名称 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 去除条件 |
Class.where(...).select(...)unscope(...).unscope(...)
注意:unscoped是删除之前的所以条件
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 返回空对象 | Class.none Class.where(...)....none 注意: null是空,Class.none这类是空对象(NullObject),可以呼出each等而不出错 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 获取数据的其他方法 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 以数组形式取出列 | Class.where(...).pluck(column [,...]) 例:ModelTest.all.pluck(:israre, :mp) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 确认指定的数据是否存在 | Class.where(...).exists? | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 自定义模型搜索方法 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 命名空间 (Named Scope) |
scope :name, ->{ ... } scope :rare, -> { where('israre = :israre', israre: true) } 位置: /app/models/... 调用: sample = Class.where(...).scope-name |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 设置默认方法 | default_scope { ... } 位置: /app/models/... 例: default_scope { order_with_hp } scope :order_with_hp, ->{ order(:hp) } |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 计算结果类 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 获取结果的行数(数量) | Class.where(...).count Class.where(...).size Class.where(...).length 推荐用size,基本没有错 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 计算类 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 直接使用SQL命令 | 一般都用query method, 尽量不要直接用SQL命令 find_by_sql(sql)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 记录(record)的登陆,更新,删除 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 基础 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 新建 | Class.new/build Class.new(...) Class.build(...) 哈希表形式指定 {:hp => 54321, :mp => 12345, israre: false} @new = ModelTest.new({:hp => 54321, :mp => 12345, israre: false})
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 新建+保存 | Class.create | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 登陆(保存) | Class#save 返回true/false 注: @sample.save!失败返回例外(用于transaction) 例: @sample.save |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 更新 | @sample.update(...) 返回true/false 哈希表形式指定 {:hp => 54321, :mp => 12345, israre: false} 用于已经存在的记录(record) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 删除 | @sample.delete
delete(keys) 单纯删除(直接执行SQL, 不经过Active Recode) 例子: sample.delete |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 进一步的操作 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 全部更新 | Class.where(...).update_all(updates) 返回改动的行数 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 删除 |
例子: sample.delete |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 全部删除 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| transaction 事务 |
def transaction Class.transaction do .... raise ... .... raise ... ... end rescue => e ... end 用发出异常来终止transaction 经常用@sample.save! 失败返回例外
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 同时运行的管理 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 定义枚举的的域 | 用与设置数字与符号的对应
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 其他更新类方法 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| P245 | 暂略 # TODO: |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 实现验证功能(validation) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ActiveModel可用的validation |
通用参数: 注: 可以直接设置成全部适用, 如 validates :id, allow_blank: true, length: { is: 10 }, uniqueness: true 或对特地验证适用, 如 validates :id, length: {allow_blank: true, is: 10}, uniqueness: true
with_options: with_options(on: :create, if: 'true') do |oc| ActiveModel可用的validation:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 声明validate |
validates field [, ...] name: params [, ...] 参数含义:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| validate触发时机 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| errors |
errors (ActiveModel::Errors类) 前提: 设定了validates, 不然不会有任何错误
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 自定义validator1 |
直接呼出方法 validates :method_name [, ...] |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 自定义validator2 |
设置 # config/application.rb # ... 创建文件 # app/models/validators/sample_validator.rb 使用 # sample.rb |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 定义不与数据库关联的model | # TODO: 需要的时候完成此项 2019/02/21 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 用关联(association)处理复杂表格 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 命名规则 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 参照的设置 | belongs_to assoc_id [,opt] 例: belongs_to :modeltest1 一对一关系
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 一对多 | has_many assoc_id [,opt]
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 一对一 | has_one assoc_id [,opt]
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 多对多 m:n |
has_and_belongs_to_many assoc_id [, opt]
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 多对多2 m:n |
a---b---c这种情况下,直接关联a---c has_many assoc_id, through: middle_id [, opt] 例 b定义处 belongs_to :a belongs_to :c a定义处 has_many :b has_many :c through: :b c定义处 has_many :b has_many :a through: :b |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 由关联自动定义的方法 | p282~283 # TODO: 略 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 关联可用的opt |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 与相关model结合 |
joins(exp) 前提是已经建立association ● 参数是关联名(如has_one则为单数) ● 搜索时候套上的symbol是表格名 cars = cars.includes(:equipment_spec).where(equipment_specs: request)
用join也能达到association的效果 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
与相关model结合 (左外部结合) Rails 5.0 |
left_outer_joins(exp) alias: left_joins(exp) 结合是左外部结合 LEFT OUTER JOIN 写法和上面一样, 但不能用C写法 ● 参数是关联名(如has_one则为单数) ● 搜索时候套上的symbol是表格名 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 和相关model一起获取 |
includes(exp) 结合是左外部结合 LEFT OUTER JOIN 写法一样,但不能用C写法 ● 参数是关联名(如has_one则为单数) ● 搜索时候套上的symbol是表格名 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 回调(call back) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 用例:注册时候每天的空白自动生成 注册或者更新时候自动发邮件 注册更新时保存为履历等 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 回调函数 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 主要方法 |
各时间点所对应函数
回调函数
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 迁移文件 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 位置 | app/db/migrate/ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 生成migration文件 | 本页最上面找 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 构造 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 逻辑方法 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 主要方法 |
tname: table name frname: 外部table name fname: field name type: field的数据类型 opt: field的option i_opt: index option t_opt:table option fr_opt: foreign key option
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
create_table, change_table 代码块内可用的方法 |
create_table,change_table代码块内可用的方法 例: change_table tname do |t| ● 可用的方法
● 可用的列定义 t.数据类型 :列名, opt 可利用的数据类型和对应关系
选项opt
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 模型处改变迁移文件数据类型 | attribute(name, type [,default: value]) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 迁移文件的生成 | 和模型一起生成 rails generate model name field:type [...] [options] 单独生成 rails generate migration name [field:type ...] [options] |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 删除或者增加列 | 生成迁移文件时候命名 rails g model AddXxxxTo表格名
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 升级与回滚 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| schema来构筑数据库 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 数据库初始化 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 迁移和初始化一起 | rails db:setup 相当于 rails db:create:all rails db:migrate rails db:seed 或者 rails db:fixtures:load |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| seed file | 初始数据来初始化(也可以用fixture)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| fixture | 测试数据来初始化(也可以用seed)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Data/Time相关的有用的方法 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| yesterday | 昨天 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| tomorrow | 明天 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| prev_xxxx | 前年/月/周(year,month,week) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| next_xxxx | 下年/月/周(year,month,week) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| beginning_of_xxxx | 年/季/月/周的开始一天(year, quarter, month, day) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| end_of_xxxx | 年/季/月/周的最后一条(year, quarter, month, day) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| n.xxx.ago Numeric |
n个年/月/日/时/分/秒以前 years, months, days, hours, minutes, seconds 也可以用单数 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| n.xxx.from_now Numeric |
n个年/月/日/时/分/秒以后 years, months, days, hours, minutes, seconds 也可以用单数 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Rails5 Model Document的更多相关文章
- Rails5 View Document
更新: 2017/06/11 更新: 2017/06/15 加粗,submit必须放在form_for内部 更新: 2017/06/23 对待完成的追加# TODO: ...
- Rails5 Route Document
创建: 2017/06/29 完成: 2017/06/29 更新: 2017/06/30 最开头的有效路径展示补充网页版 更新: 2017/07/21 修正错别字 更新: 2017/09/02 增加m ...
- Rails5 Controller Document
更新: 2017/06/28 大致完成全部 更新: 2017/06/29 补充module文件命名规则 更新: 2017/07/09 补充session的设置 更新: 2018/03/06 修正ren ...
- 初探React,将我们的View标签化
前言 我之前喜欢玩一款游戏:全民飞机大战,而且有点痴迷其中,如果你想站在游戏的第一阶梯,便需要不断的练技术练装备,但是腾讯的游戏一般而言是有点恶心的,他会不断的出新飞机.新装备.新宠物,所以,很多时候 ...
- JSON&XML总结
JSON&XML: JSON----- //英译 Serialization:序列化 perform:执行 segue:继续 IOS5后 NSJSONSerialization解析 解析JSO ...
- Provider Hosted App中使用JOM问题
在使用SharePoint 2013的JOM时,出现以下问题: ReferenceError: SP is not defined 经反复试验和搜索,得出以下两种方式: 一.直接引用JS文件,引用顺序 ...
- 资源list:Github上关于大数据的开源项目、论文等合集
Awesome Big Data A curated list of awesome big data frameworks, resources and other awesomeness. Ins ...
- SpringMVC自定义视图 Excel视图和PDF视图
一.自定义视图-Excel视图 1.Maven依赖 引入POI <dependency> <groupId>org.apache.poi</groupId> < ...
- js正则,电话,邮箱
1. <script type="text/javascript"> var str="Is this all th05777-89856825ere is5 ...
随机推荐
- 最详细的JavaWeb开发基础之java环境搭建(Mac版)
阅读文本大概需要 5 分钟. 我之前分享过在 Windows 下面配置 Java 环境,这次给大家带来的是 Mac 下面安装配置 Java 环境.首先 Mac 系统已经带有默认的 Java,但是由于使 ...
- C51 蜂鸣器 个人笔记
音调:频率 音量:高低电平占空比 有源:上面没有加号,只需高低电平即可发声 无源:上面有加号,不仅要电平,还要, 的频率 这里的有源不是指电源的"源",而是指有没有自带震荡电路,有 ...
- Qt笔记——添加菜单图片/添加资源文件
添加新文件,模板选择Qt分类中的Qt资源文件(Qt Resource File) 先添加前缀,点击"添加"按钮,然后选择"添加前缀",我们这里因为要添加图片,所 ...
- 牛客网sql练习
一建表语句 /* Navicat MySQL Data Transfer Source Server : test Source Server Version : 50717 Source Host ...
- 解方程(codevs 3732)
题目描述 已知多项式方程: a0+a1x+a2x^2+..+anx^n=0 求这个方程在[1, m ] 内的整数解(n 和m 均为正整数) 输入输出格式 输入格式: 输入文件名为equation .i ...
- 【intellij】intellij idea 建立与src级别的目录
在使用三大框架时,通常会把配置文件放在自己新建的config文件夹里,以便编程.在 myeclipse里新建的config文件夹是Source Folder属性的 这样他的级别适合src一个级别,但是 ...
- 2017 CCPC 杭州 HDU6273J 区间修改(线段树&差分数组)
http://acm.hdu.edu.cn/downloads/CCPC2018-Hangzhou-ProblemSet.pdf 解析 线段树区间延迟更新 或 差分数组 两个数 统计2和3的最少的 ...
- 找宝箱 (bfs)
Problem Description 作为一个强迫症患者,小 Y 在走游戏里的迷宫时一定要把所有的宝箱收集齐才肯罢休.现在给你一个 N *M 的迷宫,里面有障碍.空地和宝箱,小 Y 在某个起始点,每 ...
- 从零开始写STL-容器-list
从零开始写STL-容器-list List 是STL 中的链表容器,今天我们将通过阅读和实现list源码来解决一下问题: List内部的内存结构是如何实现的? 为什么List的插入复杂度为O(1)? ...
- SecureCRT在Tab下的Title显示IP
注意:要针对每个Session进行修改才行. 参考: http://www.cnblogs.com/tyhmj/archive/2013/12/20/3483247.html