2015-11-06 22 views
1

我有一個叫Event的模型,另一個叫Project。我試圖對創建Event時設置一些驗證,以便首先必須提供一個project_id值(這已經有效),然後檢查該項目的schedule_mode值不是'free'。然而,我很努力地首先通過project_id值將提供作爲參數和第二,即使我臨時硬編碼,它然後抱怨'undefined method免費'', which is the schedule_mode`返回。我哪裏錯了?Rails驗證 - 從函數返回的驗證值

validates Project.find(:project_id).schedule_mode, exclusion: { in: %w(free) } 
+0

您可以發佈您'Project'和'Event'模式? – Brozorec

回答

1

假設,Eventbelongs_to的Project,你可以在你的Event模型添加自定義驗證:

# app/model/event.rb 
validate :schedule_mode 

private 

def schedule_mode 
    if project.schedule_mode == 'free' 
    errors.add(:schedule_mode, "value can't be free") 
    end 
end