2011-05-13 4 views
0

이것은 매우 간단 할 수 있습니다. 나는 매개 변수를 전달할 때 사용자 객체를 반환하는 컨트롤러가 있습니다.덜 지정된 속성을 검색하는 사용자 객체

def show 
    if params[:mob] 
    user = User.find(params[:id]) 
    respond_with([user.establishments, 
       user]) 

이 값은 전체 사용자 개체를 반환합니다. 사용자 개체에 암호화 된 암호, 해시 및 노출하고 싶지 않은 다양한 데이터가 있기 때문에 문제가됩니다.

사용자 개체가 지정된 특성보다 적은 값을 반환하도록하는 올바른 구문은 무엇입니까? 내가 수동으로 새 해시를 만들 필요가없는 사용자의 속성 중 노출하고자하는 솔루션을 찾고 있는데 간단히 말하면 "x와 y없이 사용자에게 제공"보다 "나에게 해시 user.a, user.b, user.c, ... user.n "

xx!

답변

2

xml 또는 json에서 데이터를 반환 할 때 문제가 있다고 가정합니다.

특정 필드를 제외하려면 다음과 같이하면됩니다.

obj.to_xml(:except => [ :created_at, :updated_at ]) 

또는 모델에서 항상 to_xml 함수를 재정 의하여 값을 항상 제외 할 수 있습니다.

+0

예 정확히 경우 :

는 사용자를 "소독하라고"하는 새로운 방법을 만듭니다. 이것이 제가 찾는 방법입니다. .to_json을 먼저 호출하지 않고 적용하는 방법은 무엇입니까? 내 컨트롤러가 이미 json 형식으로 응답하고 있으므로 to_json 호출은 중복됩니다. : except 블록을 사용자에게 직접 호출 할 수 있습니까? 방법? 고마워! – istan

+0

당신은 당신의 모델에서 이것을 무시하여 항상 그렇게 할 수 있습니다.이 게시물을보십시오. http://stackoverflow.com/questions/2572284/override-to-json-in-rails-2-3-5 – Scott

0

필수 속성이있는 새 사용자 개체를 반환하는 사용자 개체에 인스턴스 메서드를 추가 할 수 있습니까?

1

다른 제안이 있습니다.

class User < ActiveRecord::Base 
    ... 
    def strip_sensitive_data! 
    [:password, :ssn, :birth_date].each { |m| send("#{m}=", nil) } 
    end 
    ... 
end 

user = User.find(params[:id]).strip_sensitive_data! 
관련 문제