读ruby on rails fat_free_crm笔记

 

mysql in 用法  in中可以接受一个多个值

mysql upper用法 将参数转为大写

mysql like %query% query 前面的百分号表示query前面的0或多个字符,query 后面的百分号表示query后面的0或多个字符

'hello'.gsub(/正则表达式/, '替换的值')  gsub方法的用法就用将一个字符串去匹配参数一中的正则表达式,用第二个参数的值去替换匹配出的字符

'  hell0  '.strip  表示去除字符串前后的空格

'hello'.is_a(String) 是判断'hello'是不是String类的一个实例

'Hello'.downcase   将这个字符串中的大写字母转为小写

'Hello'.tableize 将这个字符串转为表的名字比如 'Hello'.tableize--> hellos

:hello 是ruby中的Symbol

'hello'与:hello区别

a = 'hello' 

b = 'hello'

当把'hello'赋值给a的时候,内存给a分配了一个内存空间

当把'hello'赋值给b的时候,内存给b又分配了一个内存空间

:hello

a = :hello 

b = :hello

当把:hello赋值给a的时候,其实是把:hello的引用给了a

当把:hello赋值给b的时候,其实是把:hello的引用给了b

 

user.send(:username) == user.username

 

unless 除非什么? 

  false

  do ....

end

  true

  do.... 

 

has_one :dependent => :nullify 表示将外健设置为null

has_one :conditions => 条件   指定关联的对象必须满足conditions条件的

 

accepts_nested_attributes_for :address, :allow_destroy => true # 创建 address_attributes=   allow_destroy表示这个属性可以被销毁

 

在where中,可以用? 做占位符,如果这个参数在多个地方都用到,可以用Symbol类型占位符,写法 where('a = (:a)',:a=xxx)

 

validates_presence_of if true就去验证,false不去验证

 

def self.per_page ; 20                  ; end  一些很短的方法可以用这种形式写,;代表这这行语句的结束

 

super()调用父类的super所在的那个方法,super在那个方法调用,就去调用父类的这个方法

''.nil? 判断这个字符串是不是nil ''不等于nil

''.blank? 判断这个字符串是不是空白,''也属于空白

''.present? 判断这个字符串是不是存在,''也属不存在

 

has_many  :through 是指通过那个model来关联

 

正则表达式

| 左右两边表达式之间 "或" 关系,匹配左边或者右边

()

(1). 在被修饰匹配次数的时候,括号中的表达式可以作为整体被修饰

(2). 取匹配结果的时候,括号中的表达式匹配到的内容可以被单独得到

  举例5:表达式 "Tom|Jack" 在匹配字符串 "I'm Tom, he is Jack" 时,匹配结果是:成功;匹配到的内容是:"Tom";匹配到的位置是:开始于4,结束于7。匹配下一个时,匹配结果是:成功;匹配到的内容是:"Jack";匹配到的位置时:开始于15,结束于19。

  举例6:表达式 "(go\s*)+" 在匹配 "Let's go go go!" 时,匹配结果是:成功;匹配到内容是:"go go go";匹配到的位置是:开始于6,结束于14。

  举例7:表达式 "¥(\d+\.?\d*)" 在匹配 "$10.9,¥20.5" 时,匹配的结果是:成功;匹配到的内容是:"¥20.5";匹配到的位置是:开始于6,结束于10。单独获取括号范围匹配到的内容是:"20.5"。

 

(?:pattern) 匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用 "或" 字符 (|) 来组合一个模式的各个部分是很有用。例如, 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。

 

"hello abc haha denghaigui".strip.split(' ')  --> ["hello", "abc", "haha", "denghaigui"]

%w(a, b, c) --> ["a, b, c"]

''.intern 将字符串转为Symbol类型

a = [1,2,3,4,5]  a.reverse[0] --> 5 反向取出  a[1..3] --> 2,3,4 从下标第1个开始,到下标第3个结束  a[-1] --> 5 下标是负数这表示从数组的尾部开始获取从-1开始

[].empty? 判断数组是否为空

{}.empty? 判断Hash是否为空

users << user # users is Array ,user is object ‘<<’表示把右边的添加到左边数组中,就像调用users.push(user)

 

大量使用了  do... if boolean      让代码更佳简洁清爽

          do... unless boolean

 

*args 可变参数,

def test(*args)

   a = args[0] --> 1

   a = args[1] --> 2

   a = args[2] --> 3

   a = args[3] --> 4

end

test(1,2,3,4)

 

includes和joins去区别

joins会产生 1+N 问题 

includes不会

 

Time.zone.now.midnight.utc 就是得到今天00:00:00的UTC时间

Time.zone.now.midnight.tomorrow.utc 就是得到明天00:00:00的UTC时间

Time.zone.now.midnight.tomorrow.utc+ 1.days 就是得到后天00:00:00的UTC时间

Time.zone.now.beginning_of_month.utc 这个月的第一天

Time.zone.now.beginning_of_week.utc  第一个工作日 星期一开始算第一个工作日

Time.hour 获得小时

Time.min  获得分钟

Time.sec  获得秒钟

 

''.constantize 试图去上下文找与字符串中指定的名称的类

 

rescue 错误或异常  当这个方法出现错误或异常的时候,就会去做do...

  do...

end

 

cattr_accessor :name #cattr_reader:name cattr_writer:name

 

cattr_reader:name

cattr_writer:name

 

def name # cattr_reader:name

  @name

end

 

def name=(:args) #cattr_writer:name

  @name = :args  

end

 

ASSETS = %w(all tasks campaigns leads accounts contacts opportunities) 大写字母定义的变量我们叫它常量

 

 

[].include?(args) 判断数组中是否包含args

 

Object.freeze 冻结,不能修改的

Object.dup  浅拷贝一份Object对象


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值