0
新手問題。我想向我的聯合表模型添加一個驗證步驟,以確保在沒有包含行作爲引用的兩個表連接的情況下無法創建該類型的對象。例如:Rails多對多外鍵驗證?
class Appearance < ActiveRecord::Base
belongs_to :dancer
belongs_to :movie
end
class Dancer < ActiveRecord::Base
has_many :appearances, :dependent => :destroy, :foreign_key => 'dancer_id'
has_many :movies, :through => :appearances
end
class Movie < ActiveRecord::Base
has_many :appearances, :dependent => :destroy, :foreign_key => 'movie_id'
has_many :dancers, :through => :appearances
end
如何確保在舞者和電影行不存在的情況下無法創建外觀?
謝謝大家!
編輯:回答下面數的建議:
我沒有多少運氣與不幸。通過與控制檯(重新加載後)打我得到這樣的:
appearance = Appearance.new(:dancer_id = Dancer.all.first.id, :movie_id => Movie.all.first.id)
Movie.all.first.destroy
appearance.valid?
=> true
,而我期待的迴應是假的,因爲我只是核爆電影排。
是的,但這是在控制檯和人爲的。這實際上是現實世界中的問題嗎?換句話說,你是否打算將外觀加載到內存中,然後刪除它的電影/舞者並嘗試保存它?如果這是一個真正的問題,'inverse_of'可能會有所幫助。我將它添加到答案中。 – numbers1311407