2015-11-06 75 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