homeASCIIcasts

2:  Dynamic find_by Methods  

(view original Railscast)

Other translations: En It Fr Es Pl Pt

Other formats:

Written by Taewon Shim

레일즈에서 아주 유용하게 쓸수있는 Find의 사용법입니다. 밑의 코드는 Task 모델에서 완료 안된 (complete 컬럼이 false인) 테스크들을 찾아줍니다.

class TaskController < ApplicationController def incomplete @tasks = Task.find(:all, :conditions => ['complete = ?', false]) end def last_incomplete @task = Task.find(:first, :conditions => ['complete =?', false], :order => 'created_at DESC') end end

find_by_all을 사용하면 보다 간단하게 줄일 수 있습니다 그저

@tasks = Task.find(:all, :conditions => ['complete = ?', false])

@tasks = Task.find_all_by_complete(false)

로 바꾸면 됩니다.

만약에 전부가 아닌 하나의 Task만을 원한다면 find_by를 사용하면 됩니다. 예를 들어, 완료 안된 마지막 테스크를 찾길 원한다면,

@task = Task.find(:first, :conditions => ['complete =?', false], :order => 'created_at DESC')

@task = Task.find_by_complete(false, :order => 'created_at DESC')

로 바꾸면 됩니다.

find_by 함수에서도 find 함수에서 처럼 order 파라메터를 사용할 수 있습니다.