我正在验证父母的子对象,如下所示:
validate :overdue_tasks_valid
validate :created_overdue_tasks_valid
然后我有这样的方法:
private
def overdue_tasks_valid
validate_notification(overdue_tasks, :overdue_tasks)
end
def created_overdue_tasks_valid
validate_notification(created_overdue_tasks, :created_overdue_tasks)
end
def validate_notification(notification, key)
return if notification.valid?
notification.errors.full_messages.each do |message|
errors.add key, message
end
end
我想知道的是,我是否可以只将一个参数传递给validate_notfication并以某种方式确定方法中的符号?
因此验证通知会像这样调用:
validate_notification(overdue_tasks)
这个方法看起来像这样:
def validate_notification(notification)
return if notification.valid?
notification.errors.full_messages.each do |message|
errors.add [SOMEHOW GET THE SYMBOL], message
end
end
答案 0 :(得分:0)
不,但您可以改为发送符号:
def overdue_tasks_valid
validate_notification :overdue_tasks
end
def created_overdue_tasks_valid
validate_notification :created_overdue_tasks
end
def validate_notification(method)
notification = send method
return if notification.valid?
notification.errors.full_messages.each do |message|
errors.add method, message
end
end
秘密酱当然是Object#send
。