티스토리 뷰

해당 글은 https://blog.naver.com/kbs4674/221420285631 로 부터 게시글이 이전되었습니다.

 

루비온 레일즈에서 다루는 여러가지 메소드를 소개하고자 합니다.

 

위 테이블의 자료를 기반으로 한번 여러 메소드를 알아보겠습니다.

 

1. where VS find_by

1) where : 조건에 맞는 데이터에 대해 여러 개의 데이터 결과가 출력됩니다.

# Model.where(attribute: value)
Post.where(title: "서윤 연구소")

 

2) find_by : 조건에 맞는 데이터에 대해 한 개의 데이터 결과가 출력됩니다.

출력되는 한 개의 데이터는 제일 처음에 쓰여진 데이터입니다.

 

 번외  여기서 where에 대해서 좀 더 깊게 짚어보자면, 아까와는 조금 다르게

# Model.where(attribute: value)
Post.where(title: "건우")

위 방식을 통해 단어를 탐색하면 '주식회사 건우' 가 있음에도 불구하고 아까와는 다르게 검색결과가 안나옵니다.

단어를 포함한 데이터 탐색을 하고싶다면 다음과 같은 방식을 통해 검색을 하면 됩니다.

Post.where("title like ?", "%건우%")

 

 

2. empty VS nil

1) empty : empty는 뭔가 데이터가 string형으로 초기화 되어있지만, 아무런 내용도 없는 상태입니다.

@apple = ""
#=> true

@apple = "사과"
#=> false

@apple
#=> false

 

2) nil : NULL의 의미를 가졌으며, 초기화 조차도 되어있지 않습니다.

하지만 그렇다고 해서 empty 상태가 곧 nil 상태는 아닙니다.

@apple
#=> true

@apple = ""
#=> false

@apple = "사과"
#=> false

 

 

3. empty VS present

1) empty : 이 전의 empty는 Ruby문법 관점으로 봤다면, 이번에는 Rails 관점으로 봐야합니다.

레일즈 관점으로 바라보면 테이블 내 데이터가 있는지 확인합니다.

<% if Post.all.empty? %>
    <h2 class="text-center" style="margin-top: 30px;">게시글이 없습니다.</h2>
<% else %>
    <% Post.all.each do |x| %>
        <%= x.title %>
        <hr/>
    <% end %>
<% end %>

 

2) present : 한 데이터 row의 Attribute 내 내용이 존재하는지 판단합니다.

<% Post.all.each do |x| %>
    <%= x.title %>
    <% if x.content.present? %>
        | <%= x.content %>
    <% else %>
        <span style="color: red">내용이 없습니다.</span>
    <% end %>
    <hr/>
<% end %>

 

 

4. update VS update_all

1) update : 조건에 맞는 메소드에 대해 Attribute 내용을 수정합니다.

 

2) update_all : 조건에 맞는 데이터 전체를 한번에 수정합니다.

 읽을거리  비교분석 : SQL 작업 속도

 

 


 

여기서부턴

 

위 자료를 기반으로 메소드를 살펴보겠습니다.

 

5. all

<%= Post.all.each do |x| %>
    <%= x.title %>
    <hr/>
<% end %>

누구나 개발을 하면서 제일 많이 쓰는 메소드일 겁니다.

모든 테이블 내 데이터를 보여주는 메소드 입니다.

 

6. first(n)

1) ruby

0번 째 부터 n개 만큼의 배열을 출력합니다.

@array = [1,2,3,4,5]
@array.first(3)
# => [1, 2, 3]

 

2) rails

제가 개발을 하면서 제일 많이 쓴 메소드입니다. 첫 구절 DB부터 몇 번 째 까지 보여줄 것인지 정합니다.

<%= Post.first(3).each do |x| %>
    <%= x.title %>
    <hr/>
<% end %>

 

 

7. last(n)

1) ruby

끝 배열 부터 n개 만큼의 배열을 출력합니다.

@array = [1,2,3,4,5]
@array.last(3)
# => [5, 4, 3]

 

2) rails

마지막 구절 DB부터 몇 번 째 까지 보여줄 것인지 정하는 메소드 입니다.

<%= Post.last(3).each do |x| %>
    <%= x.title %>
    <hr/>
<% end %>

 

 

8. drop(n)

1) ruby

@array = [1,2,3,4,5]
@array.drop(2)
# => [3, 4, 5]

 

2) rails

앞의 몇 개의 DB를 생략하고 보여줄 것인지 정하는 메소드 입니다.

<%= Post.all.drop(9).each do |x| %>
    <%= x.title %>
    <hr/>
<% end %>

 

 

9. uniq

## app/views/...
<% Post.all.uniq.each do |x| %>
    <%= x.title %>
<% end %>

중복적으로 보여지는 글(게시글 id값이 동일)에 대해선 표시되진 않습니다.

(과거에 http://www.damda.info/ 사이트를 개발하면서 데이터 중복 현상이 한번 발생했었음.)

uniq 메소드 적용 전, 후

 

 

10. time_zone

## config/application.rb

config.time_zone = 'Seoul' # Time Zone 국가 지정
## app/views/...
<% Post.all.each do |x| %>
    <%= x.title %>
    <%= x.created_at.time_zone %>
    <hr/>
<% end %>

Rails 프로젝트의 현재시간 기준 국가를 보여줍니다.

기본 국가는 UTC+00:00 인 영국 표준시이며, 따로 국가를 설정하려면  config/application.yml  에서 다음과 같이 설정해줘야 합니다.

 

해당 메소드를 쓸 땐 보통 다른 메소드랑 같이 씁니다.

created_at.time_zone.now.strftime('%Y-%m-%d %H:%M')
# => 2019-11-06 03:50

 

 

11. in_time_zone("반도 혹은 대륙/수도")

<% Post.all.each do |x| %>
    <%= x.title %>
    <%= x.created_at.in_time_zone("America/Chicago") %>
    <hr/>
<% end %>

Rails 프로젝트의 현재시간 기준 국가를 보여줍니다.

time_zone과는 다르게 메소드 내에서 국가 설정을 합니다.

 

 

12. strftime('%Y-%m-%d %H:%M')

<% Post.all.each do |x| %>
    <%= x.title %>
    <%= x.created_at.strftime('%Y-%m-%d %H:%M') %>
    <hr/>
<% end %>

년/월/일/시/분 을 어떻게 보여줄건지 형식을 정합니다.

 

13. now

주로 Time 타입과 같이 쓰이며, 현재 시간을 알려줍니다.

 

14. to_i

Strng(문자) 등 다른 형식을 문자형 데이터 타입으로 변환하기 위해 쓰입니다.



15. to_s

프로그래밍 코드 혹은 숫자형 데이터 타입을 String(문자) 데이터 타입으로 변환하기 위해 쓰입니다.

 

16. to_a

Array 타입으로 변환합니다.

 

17. hash

아직까지 개인적으로 쓰인 일은 없었는데, 숫자나 문자를 hash값으로 변환시켜줍니다.

(하지만 간단히 hash 함수 하나만으로 보안적으로 쓰기에는 좋은 선택은 아닐거에요.)

 

 

  • 읽을 거리

1. 알아두면 도움이 되는 55가지 루비기법 [클릭]

댓글
댓글쓰기 폼
공지사항
Total
148,745
Today
111
Yesterday
430
링크
«   2021/10   »
          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            
글 보관함