2012-10-31 106 views
0

我嘗試YAML文件加載到一個數組,但它無法與未定義的方法`加入搜索‘abc’:字符串加載YAML和加入失敗

# 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' 

還是同樣的結果,在軌道安慰這個完美的作品,我缺少什麼? 上面的代碼是我user.rb模型中,在控制檯它的工作原理

編輯: bad_hosts.yml樣子(縮短)1個提供商行

0-mail.com 
10minutemail.com 
30minutemail.com 
4warding.net 
+0

你是什麼'的config/bad_hosts.yml'文件的內容。問題似乎在那裏。 – simonmenke

+0

bad_hosts.yml的內容我將在上面添加 – Rubytastic

回答

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" 
+0

這完全做到了,它完全沒有注意到文件結構的變化,我基於application.yml thx指出了我的基礎! – Rubytastic