私のアプリケーションには、異なるクラスにポリモーフィカルに関連付けられたImageクラスがあります。したがって、これらのオブジェクトにはそれぞれ一連のイメージがあり、そのうちの1つを機能イメージとして設定できるようにしたいと考えています。関連付けられたオブジェクトでラジオボタンのように動作するブール値フィールドを作成したい
Imageクラスにis_featured
フィールドを追加しました。このフィールドをtrueに設定して、関連付けられたオブジェクトごとに1つのイメージしか存在しないようにしたいと考えました。
私が試していたのは、このフィールドのセッターメソッドをオーバーライドすることでした。
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
誰もが作業イマイチ知っている:これは私がこれまでに得たが、それは仕事をdoesnt何(それはfalse
からis_featured
残りのフィールドを設定しdoesntの)?
私はおそらく、これを行うためのより良い方法があることを知っています。関連するオブジェクトにfeatured_image_id
フィールドを使用していますが、この時点で私はこの作業を行う方法を知りたいと思います。
申し訳ありませんが、「イメージング可能な」オブジェクトには、is_featuredフィールドがtrueに設定されているイメージを返す、featured_imageメソッドがあります。その方法は非常に簡単で、完璧に機能するので、私はそれが問題だとは思わない。私はそれらのすべてを繰り返し処理しようとします。 –