레일즈에서 아주 유용하게 쓸수있는 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
파라메터를 사용할 수 있습니다.