我尝试将一个yaml文件加载到一个数组中,但它失败了,未定义的方法`join'代表“a b c”:String
# Check certain temporarily emails
# Throw notice not accepted use other email
require 'yaml'
bad_hostnames = YAML::load(File.read("#{Rails.root}/config/bad_hosts.yml"))
if /^(#{bad_hostnames.join("|")})$/.match(host)
errors.add(:email, "Please not use a disposable mailbox")
end
所以我在模型之前和之上需要yaml ,我在中加载yml的控制器:
require 'yaml'
同样的结果,在rails控制台中,这完美无瑕,我错过了什么? 上面的代码在我的user.rb模型中,在它运行的控制台中
编辑: bad_hosts.yml看起来像(缩短了)1提供者行
0-mail.com
10minutemail.com
30minutemail.com
4warding.net
答案 0 :(得分:2)
您的 .yml
文件不是YAML文件。
这会使它成为.yml
文件。
- 0-mail.com
- 10minutemail.com
- 30minutemail.com
- 4warding.net
但是当你想逐行加载一个文件时,请尝试以下方法:
lines = IO.readlines("#{Rails.root}/config/bad_hosts.yml")
# note: lines end in "\n"