내 응용 프로그램에는 사용자 개체 모델이 있습니다. 페이스 북에 접속하기 위해 코알라와 OmniAuth를 사용하고 있습니다.데이터베이스에 저장된 일부 속성과 Facebook에서 읽은 일부 속성을 사용하여 ActiveRecord 모델을 만드는 방법
페이스 북에서 내 모델에 컨트롤러의 데이터를 올바르게 직렬화하는 방법으로 데이터를 추가하는 방법을 알아 내려고합니다.
는 이미 그런 내 컨트롤러에 페이스 북의 데이터를 얻을 수 있었다 :token = request.env["omniauth.auth"]["credentials"]["token"]
api = Koala::Facebook::API.new(token)
api.get_object("me")
그리고 내가하지만 방법으로, DB 컬럼없이 내 모델에 속성을 추가하는 방법까지 생각 생각 일련 번호가 지정된 응답에 그대로 유지됩니다.
def fb_info
{"fb_info" =>"should be here"}
end
def attributes
super.merge('fb_info' => fb_info)
end
그렇다면 함께 사용하는 것이 가장 좋은 방법은 무엇입니까? 내 모델에서 어떻게 든 속성을 채워야합니다. 그걸하기 위해서 거기에 액세스 토큰이 필요합니다. 컨트롤러를 호출하여 모델을 호출하거나 모델에 토큰을 전달하는 것은 지저분 해 보입니다. 이 문제를 해결할 수있는 확실한 방법이 있습니까?
단순하고 단순합니다. 이 접근법에서 내가 가진 유일한 문제는 모델에서 데이터를 채우는 컨트롤러 (컨트롤러가 데이터를 읽어야하는 흐름에서도)를 배치한다는 점입니다. 이것이 최선의 실행인지 확실하지 않습니다. 또한 객체 목록을 렌더링 할 때 (예를 들어) 컨트롤러의 모든 모델 객체를 반복해야하므로 컨트롤러의 모델 관련 코드가 너무 많아 보입니다. – davidrac
예, 컨트롤러는 가능한 단순해야합니다. 컨트롤러 코드가 너무 복잡한 경우이 코드의 일부를 모델링하거나 심지어 라이브러리를 분리 할 수도 있습니다. 때때로'rails_best_practices' 젬이 힌트를 줄 수 있습니다. –