0

yamlファイルを配列にロードしようとしましたが、「ab c」:Stringの未定義のメソッド`join'で失敗します

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

1 に答える 1

2

あなたの.ymlファイルはYAMLファイルではありません。

これはそれを.ymlファイルにします。

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

ただし、ファイルを1行ずつロードする場合は、次のことを試してください。

lines = IO.readlines("#{Rails.root}/config/bad_hosts.yml")
# note: lines end in "\n"
于 2012-10-31T10:31:46.157 に答える