rails 常用方法

bundle install --without production  不安装production中的gem

./configure && make && sudo make install  把源代码编译成可执行的程序

$ bundle exec rake -T db  可查看所有与数据库相关的任务,rake db:就是用来管理数据库的,是数据库不是表

rake -T 查看所rake 命令

heroku run rake db:migrate

bundle exec rake db:migrate VERSION=0  数据库回退到指定版本,0就是数据库最开始的状态

超链接
show  <%= link_to user.name, user %>
delete  <%= link_to "delete", user, method: :delete,  data: { confirm: "You sure?" } %>
edit   <%= link_to "Settings", edit_user_path(current_user) %>

生产环境

rails s --environment  production
bundle  exec  rake db:migrate RAILS_ENV = production
bundle exec rake db:migrate:reset   删除数据库中数据

调试
debugger

测试
页面内容测试(view),数据库数量/内容测试(model),controller测试

先单元测试,测试单个功能。再从页面考虑,根据行为,集成测试
rails g integration_test signup
rake  test:integration
bundle exec rake test TEST=test/integration/users_login_test.rb
bundle exec rake test TEST=test/integration/users_login_test.rb  TESTOPTS="--name test_login_with_valid_information"

测试中cookies中不能使用符号键,但可以实用字符串键   cookies[:key]会返回nil    cookies[‘key‘]会返回正确的值

测试中可以实用assigns获取controller中的实例变量,比如@user,test中assgins(:user)

安全随机数
SecureRandom.urlsafe_base64  返回A-Z a-z 0-9 -_    长度为22的随机字符串,每一位有64种可能

cookie
cookies[:remember_token] = { value: remember_token,   expires: 20.years.from_now.utc }
cookies.permanent[:remember_token] = remember_token    permanent  rails会自动将时间设为20年之后

cookies.signed[:user_id] = user.id     存入浏览器前,安全加密cookie
cookies.permanent.signed[:user_id] = user.id

User.find_by(id: cookies.signed[:user_id])
BCrypt::Password.new(remember_digest).is_password?(remember_token)

辅助方法
1.year.from_now           10.weeks.ago               1.kilobyte               5.megabytes

类方法
def self.new_token
SecureRandom.urlsafe_base64
end

class User < ActiveRecord::Base

class << self

def digest(string)
cost = ActiveModel::SecurePassword.min_cost ? BCrypt::Engine::MIN_COST :
BCrypt::Engine.cost
BCrypt::Password.create(string, cost: cost)
end

def new_token
SecureRandom.urlsafe_base64
end

end

Active Record
new_record? 检测对象是新创建,还是已经存在于数据库

路由
创建是post,编辑是patch。  构建form_for(@user)表单,根据@user.new_record?判断该发送什么请求

局部模板
rails将@users组成user对象列表,传给render后,rails会自动遍历这个列表,然后使用局部视图_user.html.haml渲染每个对象
一。<ul class="users">
<%= render @users %>
</ul>

_user.html.erb
<li>
<%= gravatar_for user, size: 50 %>
<%= link_to user.name, user %>
</li>
二。
局部模板名没必要_user,如果@users.each do |foobar|,则是render foobar
<ul class="users">
<% @users.each do |user| %>
<%= render user %>
<% end %>
</ul>

bundle exec
bundle exec annotate  
时间: 2024-10-13 13:56:15

rails 常用方法的相关文章

从头认识java-15.2 Collection的常用方法

这一章节我们来介绍一下Collection的常用方法. 我们下面以ArrayList为例. package com.ray.ch14; import java.util.ArrayList; import java.util.Iterator; public class Test { public static void main(String[] args) { ArrayList<Integer> rtnList = new ArrayList<Integer>(); rtnL

java中String的常用方法

java中String的常用方法1.length() 字符串的长度 例:char chars[]={'a','b'.'c'}; String s=new String(chars); int len=s.length(); 2.charAt() 截取一个字符 例:char ch; ch="abc".charAt(1); 返回'b' 3. getChars() 截取多个字符 void getChars(int sourceStart,int sourceEnd,char target[]

RailsCast26 Hackers Love Mass Assignment rails中按params创建、更新model时存在的安全隐患

Mass assignment是rails中常用的将表单数据存储起来的一种方式.不幸的是,它的简洁性成了黑客攻击的目标.下面将解释为什么及如何解决. 上述表单为一个简单的注册表单.当用户填入name,点击提交时,一个新用户被创建.用户模型被如下定义: ruby create_table :users do |t| t.string :name t.boolean :admin, :default => false, :null => false end 当用户点击提交时,如下的action被执

查看Oracle执行计划的几种常用方法-系列1

SQL的执行计划实际代表了目标SQL在Oracle数据库内部的具体执行步骤,作为调优,只有知道了优化器选择的执行计划是否为当前情形下最优的执行计划,才能够知道下一步往什么方向. 执行计划的定义:执行目标SQL的所有步骤的组合. 我们首先列出查看执行计划的一些常用方法: 1. explain plan命令 PL/SQL Developer中通过快捷键F5就可以查看目标SQL的执行计划了.但其实按下F5后,实际后台调用的就是explain plan命令,相当于封装了该命令. explain plan

检查主板故障的常用方法

主板故障往往表现为系统启动失败.屏幕无显示等难以直观判断的故障现象.下面列举的维修方法各有优势和局限性,往往结合使用. 1.清洁法 可用毛刷轻轻刷去主板上的灰尘,另外,主板上一些插卡.芯片采用插脚形式,常会因为引脚氧化而接触不良.可用橡皮擦去表面氧化层,重新插接. 2.观察法 反复查看待修的板子,看各插头.插座是否歪斜,电阻.电容引脚是否相碰,表面是否烧焦,芯片表面是否开裂,主板上的铜箔是否烧断.还要查看是否有异物掉进主板的元器件之间.遇到有疑问的地方,可以借助万用表量一下.触摸一些芯片的表面,

Rhythmk 一步一步学 JAVA (20) JAVA enum常用方法

JAVA 枚举定义常用方法: 1.static Enum valueOf(Class enum,String name) 返回指定name的枚举类型 2.Static Enum values[] 返回枚举常量集合 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50

Javascript - ExtJs - 常用方法和属性

常用方法和属性(Common methods and attributes) 获取 get(x) x是元素的ID || dom元素对象 || ExtElement对象 将参数所指转化为ExtElement对象并返回它(非Dom元素对象,而是对Dom元素的封装),此方法等同于new Ext.Element(x) . Ext.select(x) x是选择器 返回一个CompositeElement对象,表示ExtElment对象的集合.但返回的这个对象实际上并非数组,不能通过数组索引访问它包含的数据

Request常用方法

一.HttpServletRequest介绍 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息. 二.Request常用方法 2.1.获得客户机信息 getRequestURL方法返回客户端发出请求时的完整URL.  getRequestURI方法返回请求行中的资源名部分.  getQueryString 方法返回请求行中的参数部分.  getPath

Rails 5 开发进阶

Rails 5 开发进阶:https://www.gitbook.com/book/kelby/rails-beginner-s-guide/details cancan : http://blog.xdite.net/posts/2012/07/30/cancan-rule-engine-authorization-based-library-1/ Ruby官方文档翻译(Ruby官方文档中文版) : http://blog.csdn.net/liuk10/article/details/509