개체에 to_json
메서드를 사용하고 :methods
인수를 사용하려고합니다. 내 모델 (Drop)에 is_favorited_by_user?
이라는 메서드가 있습니다. 이 메서드는 current_user
의 인수를 사용하고 사용자가 드롭을 선호하는지 확인합니다. 이 인수를 to_json
메소드를 통해 어떻게 전달할 수 있습니까?Ruby to_json : arguments arguments
답변
당신은 모델에 current_user
속성을 추가하고 to_json
attr_accessor :current_user
def is_favorited_by_user?(user=nil)
user ||= current_user
# rest of your code
end
@drops.current_user = current_user
render :json => @drops.to_json(:methods => :is_favorited_by_user?)
to_json
메서드는 인수를 취하는 것이 아니라 "getter"메서드를 사용합니다. (일반적으로 사람은 당신의 DB 속성에 기반하여 만들었습니다.)
여기 예, 없음 인수를 전달하십시오 : 당신이 뭔가 정의를 수행하려는 경우
http://apidock.com/rails/ActiveRecord/Serialization/to_json
, 당신은 방법을 만들어야 그 원하는 정보의 해시를 만든 다음 해당 해시를 json으로 변환합니다.
내 모델 내에서 CURRENT_USER 변수를 가져올 수있는 방법이 있나요을 실행하기 전에 설정, 그래서 인수를 전달 할 필요가 없습니다 수 있습니까? –
@JamesFinley 모델은 컨트롤러 또는 http 요청의 상태를 인식하지 못합니다. current_user는 요청의 일부이며 위에서 언급 한 다중 스레드 문제로 인해 글로벌 방식으로 모델에 노출되어서는 안됩니다. 메서드 매개 변수로만 전달되어야합니다. – hammady
그게 효과가! 고마워, 보타! –
인덱스 작업에서 render : json => Drop.all을 수행 할 때이 솔루션을 어떻게 확장합니까? current_user는 어디에 할당합니까? 모델에서'cattr_accessor : current_user'를 –
, 컨트롤러에서'Model.current_user = current_user'를 선택합니다. –