pat coding

[ruby] method 본문

Language/RubyOnRails

[ruby] method

uuukpyo 2020. 2. 27. 17:36
728x90

자주사용하는 메소드정리!

 

1. scan

- 문자열을 나눠서 배열로 저장

a = "cruel world"
a.scan(/\w+/)        #=> ["cruel", "world"]
a.scan(/.../)        #=> ["cru", "el ", "wor"]
a.scan(/(...)/)      #=> [["cru"], ["el "], ["wor"]]
a.scan(/(..)(..)/)   #=> [["cr", "ue"], ["l ", "wo"]]

2. valid?

- 오류를 확인하는 메소드

my_person = Person.create(params[:person])
my_person.valid?
# => true

my_person.errors.add('login', 'can not be empty') if my_person.login == ''
my_person.valid?
# => false

3. downcase, upcase, capitalize

- 대문자, 소문자

puts "heLLo James!".downcase    #=> "hello james!"
puts "hello James! I'm Demi".upcase     #=> HELLO JAMES! I'M DEMI
puts "hello James! I'm Demi".capitalize #=> Hello james! i'm demi

새 string을 return받지 않고 객체 자체에서 바꾸고 싶다면 뒤에 !를 추가하면 됩니다.
string = "hello James!"
string.downcase!
puts string   #=> "hello james!"


4. uniq

- 해시, 배열에서 고유한 값인지 확인

# 배열
a = [ "a", "a", "b", "b", "c" ]
a.uniq   # => ["a", "b", "c"]

b = [["student","sam"], ["student","george"], ["teacher","matz"]]
b.uniq { |s| s.first } # => [["student", "sam"], ["teacher", "matz"]]

# 해시
array_of_hashes = [ {'a' => 1, 'b' => 2 , 'c' => 3} , 
                    {'a' => 4, 'b' => 5 , 'c' => 3}, 
                    {'a' => 6, 'b' => 5 , 'c' => 3} ]

array_of_hashes.map { |h| h['a'] }.uniq    # => [1, 4, 6]
array_of_hashes.map { |h| h['b'] }.uniq    # => [2, 5]
array_of_hashes.map { |h| h['c'] }.uniq    # => [3]

 


5. match

- 문자열 일치하는 것 반환

'hello'.match('(.)\1')      #=> #<MatchData "ll" 1:"l">
'hello'.match('(.)\1')[0]   #=> "ll"
'hello'.match(/(.)\1/)[0]   #=> "ll"
'hello'.match(/(.)\1/, 3)   #=> nil
'hello'.match('xx')         #=> nil

6. self

- 기본 객체 설정

class Ghost
  def reflect
    self
  end
end

g = Ghost.new
g.reflect == g # => true
class Ghost
  def self.reflect
    self
  end
end

Ghost.reflect == Ghost # => true
module Ghost
  def self.reflect
    self
  end
end 
Ghost.reflect == Ghost # => true

7. validates_presence_of

- 모델에서 저장시 지정된 속성이 비어 있지 않은지 확인

class Person < ActiveRecord::Base
    validates_presence_of :first_name
  end

8. save, save!

# 모델을 저장할때 
save = true or false 반환
save! = ActiveRecord 오류 발생
728x90

'Language > RubyOnRails' 카테고리의 다른 글

[Ruby]예외 처리  (0) 2020.03.09
[Ruby] Array 정리  (0) 2020.02.04
rails controller  (0) 2020.01.09
[Ruby excel] write_xlsx 를 통한 엑셀 설정  (0) 2020.01.07
Active Record의 정의  (1) 2019.12.24
Comments