ruby 2.2。 : 将参数传递给配置 yaml 文件中的 SQL 请求字符串

ruby 2.2. : passing parameter to SQL request string in config yaml file

给定一个配置文件config.yml

# config.yml
folders:
   tree: 
    top: "SELECT * FROM mytable WHERE name = 'alpha'"
    bottom: "SELECT * FROM mytable WHERE name = '#{name}'"

当我在 ruby 脚本中执行时:

# myscript1.rb
@config = YAML::load_file File.join( @rundir, 'config.yml')
....
@db.execute(@config['folders']['tree']['top'])

db select 正确执行.. 我应该如何将我的 ruby 命令写入 运行 第二个请求传递 'name' 作为参数?

# myscript2.rb
@config = YAML::load_file File.join( @rundir, 'config.yml')
....
name = "beta"
@db.execute(@config['folders']['tree']['bottom']) # need parameter ?

感谢帮助

对于我熟悉的 Ruby 数据库接口,您可以将参数传递给 execute,这些参数将被 SQL 转义并在 [= 标记的点插入到查询中11=]。因此,首先您想将查询重写为:SELECT * FROM mytable WHERE name = ?;。然后,您可以调用@db.execute(@config['folders']['tree']['bottom'], name)。与 Ruby 字符串插值相比,这还具有确保任何不受信任的参数被正确转义的优点。