2017-01-10 195 views
0

驗證模型的一個或多個實例的限制我有一個模型照片與應該持有其他模型中使用的照片讓說,郵政和檔案多態協會。在多態關聯

我試圖驗證:

  1. 後的每個實例只能關聯到照片
  2. 檔案的每個實例都可以關聯到照片中一個或多個實例的一個實例。

我嘗試使用下面的驗證代碼在我的照片模式沒有成功

class Photo < ApplicationRecord 
    belongs_to :photoable, polymorphic: true 
    validates_uniqueness_of :photoable_id, scope: :photoable_type 
end 

我假設範圍在此驗證將指示Rails的拒絕只爲每個重複的ID:但是真正發生的是Rails拒絕任何重複的id,無論類型設置爲'Profile'還是'Post'(例如,我只能有一個Photoable_id == 1的照片實例,但我希望我可以有兩個實例相同photoable_id只要有一個photoable_type =='個人資料',另一個photoable_type =='發佈')

你能幫助解釋如何實現這一點,爲什麼範圍不會像那樣工作?將'scope::photoable_type'留給驗證代碼的結果是一樣的。

其他2款下面的代碼:

Post模型

class Post < ApplicationRecord 
    has_one :photo, as: :photoable 
end 

剖面模型

class Profile < ApplicationRecord 
    has_many :photos, as: :photoable 
end 

回答