rails4에 concern
의 새로운 기능이 있음을 알았습니다.이 문서의 내용은 http://edgeapi.rubyonrails.org/classes/ActiveSupport/Concern.html입니다. 하지만 예상대로 작동하지 않는 것 같습니다. 내 코드는 /models/concerns/current_user.rb
입니다.레일 4 관련 오류
require 'active_support/concern'
module CurrentUser
extend ActiveSupport::Concern
module ClassMethods
def accessor_current_user
attr_accessor :current_user
end
end
end
class ActiveRecord::Base
include CurrentUser
end
당신은 아마 내 모든 모델은 메소드를 호출 할 수 원하기 때문에 내 코드의 마지막 3 개 라인, 그건 통지하고 나는 그것을 달성하기 위해 좋은 방법이 될 수있다 생각합니다. 하지만 레일즈 서버를 시작하면 accessor_current_user
메서드를 호출 할 수 없습니다. 그래서 나는 이것을 혼란스럽게 생각합니다. 나는 그 이유를 정말로 모른다. 누군가 나를 도울 수 있기를 바랍니다. :)
업데이트! 마지막으로, 이니셜 라이저 fold에서 ActiveRecord::Base
클래스를 만든 다음 클래스에 CurrentUser를 포함시키는 것이 좋은 방법이라는 것을 알았습니다.
답변 해 주셔서 감사합니다. 설명해 주시겠습니까? 마지막 2 줄을 추가하려고했지만 여전히 작동하지 않습니다. – hsming
마지막 2 줄은 여기에 설명되어 있습니다. 추가하지 마십시오. 기본적인 아이디어는'CurrentUser' 모듈을 포함하는 클래스에'attr_accessor'를 추가하는 것입니다. 이것은'included' 블록으로 처리됩니다. –
글쎄, Foo 클래스의'include CurrentUser'를 추가해도 잘 작동 할 수는 있지만, 원하는 것은 아닙니다. 8 개의 모델이'accessor_current_user' 메소드를 호출 할 필요가 있다고 가정하면, 8 가지 모델 모두에'include CurrentUser'를 추가 할 필요가 있습니다. 나는 그것이 최선의 방법이라고 생각하지 않습니다. 그래서 그 목표를 달성하기 위해 몇 가지 코드를 작성할 수 있는지 궁금합니다. – hsming