내 응용 프로그램에는 다른 클래스에 polimorphically 연관되어있는 Image 클래스가 있습니다. 그래서 각각의 객체는 일련의 이미지를 가지고 있으며, 그 중 하나를 추천 이미지로 설정할 수 있기를 원합니다.관련 객체가있는 라디오 버튼처럼 동작하는 부울 필드를 만들고 싶습니다.
Image 클래스에 is_featured
필드를 추가 했으므로이 필드가 true로 설정된 연결된 객체 당 하나의 이미지 만 있는지 확인하려고했습니다.
그래서이 필드에 대한 setter 메서드를 재정의하려고했습니다. 이것은 내가 지금까지 무엇을 가지고 있지만 (이 false
에 is_featured
나머지 필드를 설정 나던) 작업을 나던 :
def is_featured=(is_featured_value)
if is_featured_value == true
current_featured = self.imageable.featured_image
if current_featured and current_featured != self
current_featured.write_attribute(:is_featured, false)
end
end
super(is_featured_value)
end
누구나가 작동 밤은 무엇인지?
BTW 관련 객체에서 featured_image_id
필드를 사용하는 것과 같은 더 좋은 방법이 있다는 것을 알고 있습니다. 그러나이 시점에서이 작업을 수행하는 방법을 알고 싶습니다.
죄송합니다. "이미지 가능"개체가 is_featured 필드가 true로 설정된 이미지를 반환하는 featured_image 메서드가있는 경우이를 언급하는 것을 잊어 버렸습니다. 그 방법은 매우 간단하고 perfetly 작품, 그래서 난 그게 문제라고 생각하지 않습니다. 나는 그들을 위해 모든 경우에 반복적으로 시도 할 것이다. –