1
레일 3 앱에서 코알라 보석을 사용하여 페이스 북 그래프 API에 연결합니다. 또한 omniauth를 사용하여 사용자를 인증합니다. 루비 문서에서NoMethodError in SessionsController # 사용자 모델에서 메소드를 호출 할 때 생성
NoMethodError in SessionsController#create
undefined method `add_friends' for #<User:0x007fcfcb1a87e8>
app/models/user.rb:28:in `block in from_omniauth'
app/models/user.rb:6:in `tap'
app/models/user.rb:6:in `from_omniauth'
app/controllers/sessions_controller.rb:3:in `create'
는 말한다 :
나는 다음과 같은 오류 얻을. "방법은이 정의도 method_missing에 응답하지가없는 수신기에 호출 될 때 제기를"
하지만 metod가 정의되어 있는데 왜이 오류가 발생합니까? 어떻게 해결할 수 있습니까? 내 SessionController에서
나는 같은 것을 할 : 당신이 def add_friends
이 from_omniauth
클래스 메소드 등의 내부에 실제로 게시 된 코드에서
class User < ActiveRecord::Base
#attr_accessible :provider, :uid, :token, :email, :name, :first_name, :last_name, :image, :gender, :location, :school, :year
has_many :friends
def self.from_omniauth(auth)
where(auth.slice(:provider, :uid)).first_or_initialize.tap do |user|
user.provider = auth["provider"]
user.uid = auth["uid"]
user.name = auth["info"]["name"]
user.first_name = auth["info"]["first_name"]
user.last_name = auth["info"]["last_name"]
user.image = auth["info"]["image"]
user.email = auth["info"]["email"]
user.gender = auth["extra"]["raw_info"]["gender"]
user.location = auth["extra"]["raw_info"]["location"]["name"]
user.token = auth["credentials"]["token"]
user.add_friends
user.save!
user
end
def add_friends
@facebook.get_connections("me", "friends").each do |hash|
self.friends.find(:name => hash['name'], :uid => hash['id']).first_or_create
end
end
private
def facebook
@facebook ||= Koala::Facebook::API.new(token)
end
end
end
당신은 나에게 다음과 같은 방법을 보여 주시겠습니까? https://gist.github.com/3025599 이제 get_connections insted를 얻습니다 : 정의되지 않은 메소드'get_connections 'for nil : NilClass – SHUMAcupcake
당신이 사용하고 있습니다. '@ facebook'을 설정하지 않아도됩니다. do
을 입력하십시오. # –
SHUMAcupcake