0

モデルのさまざまな属性をループして存在をテストする rspec テストを作成しています。ただし、変数attrをループスルーコードに挿入するたびに、変数ではなく属性自体として attr を読み取ります。これを修正するにはどうすればよいですか? 私はこれができることを知っています。

describe "testing the presence" do

  ["title", "url", "post_id"].each do |attr|

    it "tests presence for #{attr}" do
    #attr being recognized as actual model attribute
    link = Link.new(attr: "")
    link.should be_invalid
    link.errors.should_not be_nil

    end

  end

end
4

1 に答える 1

1

次のような symb=>value の古い構文を使用するように変更できます。

describe "testing the presence" do

  ["title", "url", "post_id"].each do |attr|

    it "tests presence for #{attr}" do
    #attr being recognized as actual model attribute
    **link = Link.new(attr.to_sym => "")**
    link.should be_invalid
    link.errors.should_not be_nil
    end
  end
end

また、次のようなメソッドを送信することもできます

link = Link.new
link.send attr.to_sym, ""
于 2012-11-13T23:03:14.087 に答える