自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 ActionController::Base#render源码解析

提出问题:为什么要研究这个?在日常开发中controller中的render用的很多,或者说大部分用法都知道这么用,但是我好奇这个render到底做了什么,要不然用起来总感觉缺了点什么,下面就来尝试研究下源码。先前准备: welcome_controller.rbclass WelcomeController < Application`这里写代码片`Controller def inde

2017-07-31 23:06:00 379

原创 ActiveRecord 的数据三种预加载形式 - includes, preload, eager_load和joins(不是预加载)

引言:在平常的ActiveRecord的开发中使用sql语句方式有很多,那么ActiveRecord有没有提供我们一些便利的方式来实现这个魔法,其实有的,想知道详情请向下看。当然在开始之前我们准备下数据:class Province < ActiveRecord::Base has_many :cities has_many :viliagesendclass City < Active

2017-07-23 01:17:13 1433

原创 ActiveSupport eager_autoload源码分析

eager_autoload加载方式在一些开发中很是常见,先举个例子:module MyClass extend ActiveSupport::Autoload eager_autoload do autoload :Cache endend使用场景中可以直接在 App 启动的时候执行:MyClass.eager_load!在production环境下,我们只需在config.r

2017-07-22 16:51:27 344

原创 ActiveSupport autoload源码分析

在我们平常看一些gem或者开发中autoload用的还是很多的,闲的没事总结下这个方法的内部实现,分析一下源码。在我们看源码的时候经常看到如下代码:module ActiveRecord extend ActiveSupport::Autoload autoload :Attribute autoload :Base autoload :Callbacks autoload :Co

2017-07-22 15:35:07 363

原创 module 和 class 和 def (作用域门)

作用域门: 在ruby中有三个门,Module门, Class门, def门,这里的门就是作用域的门。 看下面代码:a1 = 1class A //作用域门:进入Class门 a2 = 2 p local_variables def hello //作用域门:进入def门 a

2017-07-16 16:27:50 780

原创 instance_eval(instance_exec) 和 class_eval(class_exec)

instance_evalBasicObject.public_methods.grep /instance_eval/ => [:instance_eval] BasicObject.instance_methods.grep /instance_eval/ => [:instance_eval] 从上面的方法我们可以发现,instance_eval 是实例方法也是类方法,所以实例和类都可

2017-07-16 15:55:24 403

原创 Ruby 的变量(作用域)

在讲解变量之前首先我们要明白什么是作用域? 简单的理解就是作用域是寄居在一定的区域类,相当于一个寄居场所。

2017-07-12 15:50:12 1383

原创 ruby Singleton Class和Singleton Method

也许你经常听说singleton class,但是并没有搞清楚它到底是什么,为啥呢,就我查的,概念太绕。绕了半天也不知道咋回事,所以要总结下呢,咳咳。首先我们要搞明白一个问题,管他是不是单例类,所以我们先搞明白一个类中的作用域,先举个例子吧:class A p self class self p self end def hello

2017-07-11 23:52:26 1294 1

原创 ruby 用block来创建hash

创建hash的方式有很多种,下面用block来创建下hash, 一般不太常用,小小总结下吧:看如下代码:hash = Hash.new {|hash, key| hash[key] = [] }hash[:one] << "Angelababy" => {:one=>["Angelababy"]}hash[:two] << "天霸动霸tua" {:one=>["Angelababy"],

2017-07-11 17:23:19 300

原创 ruby block & proc & lambda

列表内容一、什么是ruby中的block? Block是一个统称,中文名称又叫闭包,英文是Closure,表现形式有block, Proc and lambda。Proc是对block的面向对象的封装, lambda是对Proc的进一步封装。block书写方式 大括号+代码 { p ‘hi’} do … end,也是代码块二、block 虽然Ruby中万物皆对象,但block是作

2017-07-11 00:01:34 364

原创 rails 代码组织

Rails代码组织concerns目录lib目录Fat Modelconcerns目录controllers/concernsmodels/concernsconcerns目录是controller和model相同逻辑存储的地方lib目录放置通用业务或者非业务相关的代码Fat Model让controller轻量化把业务逻辑放在m

2017-04-11 18:49:37 248

原创 rails callback介绍

什么是Callback在增删改查的操作上添加的回调事件,在执行增删改查的时候同步触发一些逻辑回调触发分类creating an objectupdating an objectdestroying an objectfinding an objectCreate回调before_validationafter_validationbefore_savearound_sav

2017-04-11 17:43:07 382

原创 ruby重写java对URL短地址压缩算法微博短地址原理解析

java实现对URL短地址压缩算法public class ShortUrl { public static void main(String[] args) { String url = "http://www.sunchis.com"; for (String string : ShortText(url)) {

2017-04-07 15:54:51 543

原创 rails 中的迁移Migration

安装gemgem install activerecordrequire 'active_record'Migrations作用采用Ruby DSL的方式来管理数据库的设计模式通用RDB模式管理,方便在不同数据库之前使用支持版本管理和团队协作支持数据库rollbackMigrations使用rails g modelrails g migrationrake db:mig

2017-04-05 17:36:35 1102

原创 rails 中的模型验证validate

Validations的使用安装gemgem install activemodelrequire 'active_model'这样就可以使用这个gem包中内部的方法呢举个例子如下:class User < ActiveRecord::Base validates :username, presence: { message: "用户名不能为空" } validates :username,

2017-04-05 16:30:09 1851

原创 Rails中scopes的几种使用方法

不传参数使用scope方法class User scope :finduser, {where(status: 'username')} scope :has_content, {joins(:comment).where("comments.content is not null")}end 传参数使用scope方法class User scope :finduser,

2017-04-05 15:28:40 657

原创 rails model自定义属性技巧

model自定义属性model不存在属性自定义class Blog def one_string= tagstags.split(",").each do |tag|one_tag = find_by (title: tag)one_tag = Tag.new(title: tag) unless  one_tagself.tags endendend

2017-03-30 15:57:47 1555

原创 n+1次查询

#includes这个方法主要是防止一些数据进行多余查询使用的第一种方式: @blogs = Blog.page(params[:page] || 1).per_page(params[:per_page] || 10).order("id desc").where(is_public: true)测试效果如下:第二种方式:@blogs = Bl

2017-03-30 15:44:58 392

原创 Model 增删改查简单学习

查找 find(id)  : 这个方法如果找到会返回这个对象,如果找不到会发生异常 find_by(id: 1) :这个方法如果找到会返回这个对象,如果找不发会返回nil find_by! :  这个方法同理find(id)方法 find_by_sql:如果找到这个对象会反正这个对象数组,如果没找打这个对象会返回空数组 where: 这个方法返回的是activerecord::

2017-03-30 15:39:34 343

原创 ruby map迭代简洁写法实现原理分析

主要介绍了ruby迭代map的简洁写法实现原理分析map简便的方法写法举个例子:现在有一个字符串数组,需要把其中的字符串都转化为大写array = ["first","second"]array.map(&:upcase)其实上面的写法等同于下面的写法array.map{|obj| obj.upcase}写法很简单,看看实现的原理&符号做了什么?1.触发p的to_proc方

2017-03-23 14:16:02 1992

原创 rails Model 多对多关系学习

介绍: model多对多关系,有两种方法可以实现,第一种是has_and_belongs_to_many,第二种是has_many,下面分别分析一下has_and_belongs_to_many使用场景:一个a模型有多个b模型,b模型同样也有多个a模型举个例子:一个博客有多个标签,一个标签也有多个博客,博客为blog模型,标签为tag模型,如何实现blog模型和tag模型的对应

2017-03-22 10:32:56 946

原创 rails controller 简单学习

Controller规则app/controllers目录命名规则支持命名空间,以module的方式组织Controller使用class ApplicationController endclass UsersController endController中的实例方法paramssessioncookiesrender

2017-03-21 17:29:19 350

原创 rails Render和layout基础学习

render作用生成HTTP response渲染和解释子视图(sub-view)render methodin controllerin viewrender in controller修改action的查找view的行为,组建当前request的responsedef index# ...enddef search@use

2017-03-06 15:11:48 1170

原创 rails view简单学习

view原理ActionView: actionview gemActionController : actionpack gemactionview和actionpack都可以单独应用于任何ruby项目view的查找app/viewsview的分类Template: index.html.erbPartial: _user.html.erbLa

2017-03-06 14:53:44 372

原创 rails 管理员用户管理简单实现

路由:  namespace :admin do  root 'users#index'  resources :users do  collection do  get 'search'  end  end  endcontrollerdef index@users = User.page(params[:page] || 1).p

2017-03-06 14:27:15 1058

原创 rails routes路由笔记

routes : 规定了特定格式的URL请求到后端controller的action的分发规则

2017-03-04 11:00:15 1565

原创 rails 中will_paginate-bootstrap做分页

思路:will_paginate是一个做分页的gem,但是风格不太好看,使用will_paginate-bootstrap这个gem做一个带有bootstrap样式的分页Gemfile添加gemgem 'will_paginate-bootstrap'bundle install在controller中:@users = User.page(params[:pa

2017-03-03 15:23:39 445

原创 mac的mysql意外无法正常启动

sudo mysql.server start  Password:  Starting MySQL  .. ERROR! The server quit without updating PID file (/usr/local/var/mysql/niuyufudeMacBook-Pro.local.pid).      tail -n 100 /usr/local/v

2017-03-02 17:43:08 892

原创 ruby 处理图像

require 'mini_magick'img = MiniMagick::Image.open('/path/cartoon.jpg')查看图像的宽和长w,h = img[:width],img[:height]对图像进行压缩成特定大小 img = img.resize('1050x759')对图片中特定位置的图像进行裁剪# widt

2017-03-02 16:35:00 1440

原创 rails 实现登录和注册功能

用户注册需要user这个model, user控制器控制用户的注册功能,session控制器控制用户的登录功能,welcome控制器控制用户登录和退出的跳转,为了表单友好,增加bootstrap样式

2017-03-02 15:11:28 2388 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除