私のアプリケーションには、さまざまなクラスにポリモーフィックに関連付けられた Image クラスがあります。これらのオブジェクトにはそれぞれ一連の画像があり、そのうちの 1 つを主役の画像として設定できるようにしたいと考えています。
そのため、Image クラスにフィールドを追加し、is_featured
このフィールドを true に設定して、関連付けられたオブジェクトごとに 1 つの画像のみが存在するようにしたいと考えました。
だから私がしようとしていたのは、このフィールドのセッターメソッドをオーバーライドすることです。これは私がこれまでに得たものですが、機能しません (残りのis_featured
フィールドを に設定しませんfalse
):
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
何が機能していないか知っている人はいますか?
ところで、関連付けられたオブジェクトでフィールドを使用するなど、おそらくこれを行うためのより良い方法があることはわかっていますfeatured_image_id
が、この時点で、これを機能させる方法を知りたいと思います。