Ruby 将字符串转换为关键字参数

Ruby convert string to keyword argument

我在 ruby 中有一个函数采用以下形式的关键字参数:

def get_customer_information(name: nil, dob: nil, age: nil, state: nil)
   ... query db based on supplied parameters
end

用户可以为所有关键字参数指定 1。还有一个命令行界面,用户可以在其中通过调用命令行调用并传入以下形式的 key/value 信息来利用此功能:

>GetCustomerInformation name=myName, dob=myDOB

参数被解析并分离成键和值。但是,我需要知道哪个关键字参数与命令行提供的输入相关联。有没有一种方法可以将字符串转换为关键字参数(例如,将名称转换为名称:),这样我就不需要对每个参数执行字符串比较来确定它与哪个关键字参数相关联,从而调用以下形式:

get_customer_information(name.to_keyword myName, dob.to_keyword myDOB)

或者这在 ruby 中是不可能的?

您可以使用.to_sym方法。这是将字符串转换为符号的ruby函数方法。

或使用rails自己的,"symbol name"。parameterize.underscore.to_sym。这会将字符串转换为 :symbol_name。这使用 rails 命名约定。