2012-01-17 4 views
2

가상 속성을 레일스 파인더의 조건으로 사용할 수 있습니까? 예를 들어Ruby on Rails | 조건의 가상 속성

:

Friend.find(:first, conditions: { full_name: 'Chandler Bing' }) 

Friend.where(login: '[email protected]', password: 'secret') 

# `full_name' and `password' are virtual attributes 

감사합니다.

답변

1

가상 속성이란 무엇입니까? 데이터베이스 필드가 지원하지 않는 속성?

그런 다음 할 수 없습니다.

1

일반적으로 가상 속성은 데이터베이스에 유지되지 않습니다. 레코드를 저장하는 동안 또는 데이터베이스에서 레코드를 페치 한 후에 계산됩니다. 당신은 그것을 할 수 없다!

3

최근 프로젝트에서 이와 비슷한 것을 사용합니다. 특정 날짜 범위에있는 레코드를 선택하는 데 사용합니다. 나는 파인더를 사용하지 않고 범위를 사용합니다.

scope :since, lambda {|from, to| {:conditions => {:created_at => (from .. to)}}} 

이는 Model 필드의 created_at 주어진 범위에 대해 확인 Model.since from, to처럼라고합니다.

가상 속성에 대해 이렇게하려면 범위에서 가상 필드를 만들어야합니다. first_name 및 last_name 필드와 일치하여 full_name에 일치 항목을 만듭니다.