나는 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, 1217)'사용자 만이 선택하고있는 것 같습니다. –
어떤 레일 버전을 사용하고 있습니까? –
레일을 사용하고 있습니다. 4.2.4 –