クラスLinksがあります。クラスにはこれらの属性があります
- ツイッター
- フェイスブック
- ピンタレスト
- クオラ
ユーザーがリンクをテキスト ボックスに挿入したときに、リンクが http または https で始まることを確認する検証を作成したいと考えています。
検証は機能しますが、ユーザーがリンクをまったく挿入しないと問題が発生します。空の属性で検証を実行しようとし、エラーが発生します。以下のコードは、空の属性をチェックしようとする私の試みです。
これが私の検証です:
class Links < ActiveRecord::Base
attr_accessible :facebook, :twitter, :quora, :pinterest
validate :formatted_link
def formatted_link
links = %w(facebook twitter pinterest quora)
if links.any? {|link| self[link].nil?}
#Don't want it to do any validation if column is nil.
#Would like to drop column if user doesn't add a link.
else
validates_format_of links, :with => URI::regexp(%w(http https))
errors.add(:base, "Your link must start with http or https.")
end
end
理由:
ユーザーが「www.twitter.com/username」を送信するだけで、URL が私のサイトの URL「mydomain.com/page/www.twitter.com/username」に追加されます。なぜこれが起こっているのかわかりません。これを防ぐためにできること、または私が見逃していることを教えてください。
ありがとう。