1
我有3種型號命名用戶,照片和報告如何合併has_many關聯的子項和父項的多態性結果?
型號Report
是一個多態類和用於報告用戶和照片,模型User
與模態Photo
多態關聯。
所以功能是用戶可以報告照片或任何其他用戶。
以下是遷移文件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)'我猜測只有用戶正在從中選擇。 –
您使用的是哪個版本的Rails? –
我正在使用rails 4.2.4 –