我可以从参数名称中获取成员的符号吗?

时间:2013-08-20 04:55:46

标签: ruby-on-rails ruby

我正在验证父母的子对象,如下所示:

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

1 个答案:

答案 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

相关问题