는 모델의 사용자를 고려레일스 모델에서 필드를 "오버로드"하는 가장 좋은 방법은 무엇입니까?
내가 응용 프로그램을 구축User(id: integer, name: string, email: string, status: string)
, 상태는 데이터베이스의 필드했다. 그러나 새로운 요구 사항은 어떤 경우에는 상태가 동적으로 계산되도록 변경을 의미합니다. 예를 들어, 일요일에 성이 A로 시작하면 상태가 "not ok"입니다.
나는 다음과 같은 같은 뭔가 사용자 모델에서이 기능을 캡슐화 할:
Class User < ActiveRecord::Base
def status
if is_sunday && last_name.starts_with('A')
return 'not ok'
else
return status
end
end
end
이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 위의 코드가 작동하면 데이터베이스의 필드를 메서드로 재정의하는 것이 좋지 않은 것처럼 보입니다.
또는 위의 코드를 사용하려면 get_status
메서드를 만들 수 있습니다. 그러나이 경우 응용 프로그램 전체에서 모든 참조를 status
으로 변경해야합니다. 그건 좋은 것 같지 않아.
fwiw, 나는 해결책으로 그 방법으로 완전히 괜찮습니다. 나는'get_status'를 추가하는 것이 사용자의 상태를 검색하는 두 번째 방법을 만들기 때문에 좀 더 혼란 스럽다고 생각합니다. – thewillcole