2011-08-01 12 views
1

複数のテストを1つのURL内で実行したい場合があります。ruby​​でmysqlに変数を書き込むアクティブなレコード

私はmysqlデータベースに動作して書き込みを行うコードを持っていますが、二重引用符に入れたものだけを書き出します。 "x"または"mywebsite"を変数として定義し、アクティブなレコードを作成して、変数の現在の値をデータベースに書き込むにはどうしたらいいですか?

私のコードは、現在、次のとおりです。

「」変数の配列である
require 'rubygems' 
require 'active_record' 
for x in a.each do 
    if browser.text.include?(x.chomp) 
     class Rubyist < ActiveRecord::Base 
     Rubyist.create(:name => "x", :city => "mywebsite") 
    end 
end 

。 「mywebsite」は、各テストの開始時に変更されます。テストは、配列内のxの各値に対して実行され、繰り返されます。

私が入れた場合:

 Rubyist.create(:name => x, :city => mywebsite) 

をそれから私はの線に沿ってエラーが出る:単一引用符または二重引用符で囲まれた

some/long.path/to/active_record/base.rb:1014:in 'method_missing': undefined local variable or method 'x' for Rubyist(id: integer, name: string, city: text):Class (NameError) 

答えて

1

が、私は再びあなたの質問に答えてみましょう...私はまだfor x in a.each doが冗長であると思いますが、それが動作するようには思えません。問題は、あなたがあなたのクラスの定義を閉じないということにあるようです。

これは以下の通りxが定義されていないクラス定義、内部にある意味:ときに私

if browser.text.include?(x.chomp) 
    class Rubyist < ActiveRecord::Base; end 
    Rubyist.create(:name => x, :city => mywebsite) 
end 
+0

このコードは機能しません。それは私が持っている問題とは関係ありません。 – Benjamin

+0

@Benjamin、コードがうまくいくはずです。私はあなたの問題に対する別の(可能な)解決策で自分の答えを更新しました。 – Mischa

+0

残念ながら、この余分な "; end"を入れてもコードはまったく実行されません。 – Benjamin

0

文字は文字列です。変数の名前はxなので、引用符で囲む代わりにその変数を呼び出すだけです。

Rubyist.create(:name => x, :city => mywebsite) 
+0

:あなたはRubyist.createを呼び出す前に、クラス定義を閉じる必要があり、この問題を解決するには

Rubyist.create(:name => x, :city => mywebsite) 

これを行うには、 "path/to/active_record/base.rb:1014: 'method_missing' 'のようなものを読み込んでエラーが発生し、見つからなかったビットのリストがクラッシュします。 – Benjamin

+0

@Benjamin: 'x'や' mywebsite'を定義していないようです。あなたの質問をそれらを定義するコードで更新してください。 – cam

+0

xは外部ワードパッドファイルから定義されます。一言に過ぎない。 mywebsiteは完全なURLです。私はWatirを使用しています。コードがWebサイトを訪問しているので、アクティブなレコードのコードの外側に定義されていることがわかります。 – Benjamin

関連する問題