写真、投稿、コメントの3つのモデルがあります。写真には、多型関連のattachable_idとattachable_typeカラムがあります。投稿とコメントにそれぞれattachable_type値1,2を割り当てたいと思います。多形のレールでの疑問
私はコード
Photo.rb
belongs_to :attachable, polymorphic: true
Post.rb
has_many :photos, -> { where(attachable_type: 1) }, as: :attachable, class_name: "Photo", dependent: :destroy
Comment.rb
has_many :photos, -> { where(attachable_type: 2) }, as: :attachable, class_name: "Photo", dependent: :destroy
次追加している。しかし、私は取得しようとすると、ポストusiの写真の数NG
self.photos.count
生成されたクエリは、どのように私にはわからない
SELECT COUNT(*) FROM `photos` WHERE `photos`.`attachable_id` = 853 AND `photos`.`attachable_type` = 0 AND `photos`.`attachable_type` = 1
photos
です。 attachable_type
= 0がクエリに追加されました。質問からこれを避けるように助けてください。
私たちはattachable_typeをstringの代わりにtiny intとして使用できますか?私は列のサイズを最適化したい – CR7
このhttps://github.com/doliveirakn/polymorphic_integer_typeをチェックしてください、しかし私はそれを前に使用していません。あなたがそれを小さなintにしたければ、カスタムコードを書く必要があります。正式にはサポートしていないため –