내 응용 프로그램에서 Photo has_and_belong_to_many :land_uses
Ruby/Rails : 자식 인스턴스에서 작동하는 클래스 메서드를 만듭니다.
Photo
모델에서이 도우미 메서드가 있습니다 :
def land_use_list
land_uses.map(&:name).join(', ')
end
이것은 코드 냄새 (demeter)로 나를 때렸지만, 방법을 알아낼 수 없었습니다. LandUse 모델로 이동하십시오. 내가 뭘하고 싶은 건 :
class LandUse < ActiveRecord::Base
...
def self.list
self.map(&:name).join(', ')
end
...
end
그래서 대신 photo.land_use_list
전화를 photo.land_uses.list
호출 할 수 있습니다.
그러나 특정 사진에 속하는 범위가 지정된 인스턴스에 대해 호출되는 대신 클래스에 대해 호출되기 때문에 작동하지 않습니다.
내가 생각하는 것을 할 수있는 방법이 있습니까? 더 일반적으로 앱에서 이와 같은 문제에 어떻게 접근합니까? LandUse 모델의 목록 코드를 올바른 방법으로 옮기고 있습니까? 아니면 다른 것을 추천 하시겠습니까?
굉장한 제안, 나는 협회 확장에 대해 전혀 몰랐다. Demeter 문제를 해결해 주셔서 감사합니다. 나는 라인을 따라 생각하고 있었다. 사진은 단지 토지 이용을 알고 있으며, 토지가 어떻게 포맷을 사용하는지에 관해서는 안된다. 그러나 나는 그것이 가지고있는 콘텐츠와의 상호 작용에 관한 귀하의 요지를 보았습니다. 이것은 매우 도움이되었다! – Andrew