1
데이터를 반환하기 전에 ActiveResource의 find 메서드를 내 고유 한 메서드로 별칭을 지정하여 일부 특성을 추가 할 수 있습니다.별칭 찾기 메서드가 UnauthorizedAccess 오류를 제공합니다.
class User < ActiveResource::Base
class << self
alias_method :find_original, :find
def find(username='Guest')
@user_info = find_original(username)
end
end
end
위의 코드는 100 % 시간 만 잘 동작합니다. 문제는 find 메소드에서 User의 새 인스턴스를 만들려고 할 때 발생합니다.
class User < ActiveResource::Base
class << self
alias_method :find_original, :find
def find(username='Guest')
@user_info = find_original(username)
@user = new(username: username, user_settings: {})
end
end
end
편집 :이 코드는 첫 번째 이름 작동
내가 그것을 보내 : 나는 같은 세션에서 다른 사용자 이름을 사용하려고하면
User.find('user1')
=> #<User:0x007fab51df5990 @attributes={"username"=>"user1", "user_settings"=># <User::UserSettings:0x007fab51dfe2e8 @attributes={}, @persisted=false, @prefix_options={}>}, @persisted=false, @prefix_options={}>
, 나는이 오류가 발생합니다 :
User.find('user2')
ActiveResource::UnauthorizedAccess: Failed. Response code = 401. Response message = [ISS.0084.9001] Invalid credentials. app/models/user.rb:21:in `find'
내가 (대신 alias_method의) 슈퍼를 사용하여 시도, 나의 발견 방법 뭔가 그쪽으로 명명 한 충돌을 일으키지 않습니다 (예 : def find_blah
). 아무것도 작동하는 것 같습니다.
아이디어가 있으십니까?
당신이 뭘 하려는지? 'find' 메쏘드는 어떤 클래스 인스턴스 변수를 설정하고 있습니다. 또한 'Guest'가 유효한 ID가되도록 DB 모델을 어떻게 설정합니까? –
CAS 로그인시 사용자 이름을 설정하고 있습니다. 'Guest'는 유효한 사용자 이름입니다. 나는 약간의 설명으로 나의 질문을 편집했다. 당신의 도움을 주셔서 감사합니다! – Jeremiah
나는 그것이 일하는 슈퍼 혼란 스럽다. 새로운'find' 메쏘드가'find_original'을 호출하면 ID가'user1' 인 레코드를 찾으려고 시도합니다. 비정상적인 방법으로 스키마를 설정하지 않았거나 ID = 0 인 사용자가 없다면이 호출은'ActiveRecord :: RecordNotFound'를 발생시켜야합니다 –