私は、ユーザーという名前の3つのモデルを持っている写真と子と親のポリモーフィックな結果をhas_many関連とともにマージするには?
モデルReport
の報告は、多型クラスであり、モーダルPhoto
とポリモーフィックな関連を持ってUser
ユーザーと写真やモデルを報告するために使用されます。
この機能は、ユーザーが写真や他のユーザーに報告できることです。
以下は、マイグレーションファイルReport
です。
class CreateReports < ActiveRecord::Migration
def change
create_table :reports do |t|
t.integer :user_id
t.integer :reported_id
t.string :reported_type, default: "User"
t.string :note, default: ""
end
end
end
と以下の団体が
class User < ActiveRecord::Base
...
has_many :photos, as: :attachment
has_many :reports, dependent: :destroy
...
end
class Photo < ActiveRecord::Base
...
belongs_to :attachment, :polymorphic: true
end
class Report < ActiveRecord::Base
belongs_to :user
belongs_to :reported, polymorphic: true
end
現在、私は、ユーザー自身または自分の写真のいずれかによって、ユーザのリストを報告しますするには、以下のようなクエリを使用しています。
Report.where("(reported_id=? AND reported_type=?) OR (reported_id in (?) AND reported_type=?)",
self.id, "User", self.photos.pluck(:id), "Photo")
だから私はhas_many関連で同じことをどのように達成できるのか知りたいですか?
私が間違っている場合、私は同じことを達成するか、正しいことができるよりよい方法があれば助けてください。
感謝を行うことができます最善の方法ですが、このように、このリターンクエリは私のために '' reports'を選択します。 * FROM 'reports' WHERE' reports'.reported_type' = 'User' AND 'reports'.reported_id' IN(273,932,1215,1216,127)'私はこれからユーザーが選んだと思います。 –
あなたはどのバージョンのRailsを使用していますか? –
私はレールを使用しています。4.2.4 –