2011-08-01 3 views
1

한 URL 내에서 여러 테스트를 수행하고 싶지만 다른 URL을 테스트 할 수 있습니다.ruby를 사용하여 mysql에 변수를 쓰는 활성 레코드

나는 작동하고 mysql 데이터베이스에 쓰는 코드를 가지고 있지만 정확히 큰 따옴표에 넣는 코드 만 씁니다. "x" 또는 "mywebsite"을 변수로 정의하고 활성 레코드를 데이터베이스에 변수의 현재 값으로 쓰려면 어떻게해야합니까?

내 코드 현재 :

"a"는 변수의 배열입니다
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 중복 생각하지만

나에게 다시 질문에 대답 해보자 ... 제대로 작동 않습니다. 문제는 수업의 정의를 닫지 않는 것 같습니다. Rubyist.create를 호출하기 전에

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

당신이 클래스 정의를 닫가이를 해결하려면 : 이것은 다음과 같은 의미

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

언제 이렇게하면 "path/to/active_record/base.rb : 1014 : 'method_missing'과 같은 오류를 읽은 다음 누락 된 비트 목록이 충돌합니다. – Benjamin

+0

@Benjamin : 'x' 또는'mywebsite'를 정의하지 않은 것 같습니다. 질문을 정의하는 코드로 업데이트하십시오. – cam

+0

x는 외부 워드 패드 파일에서 정의됩니다. 한 마디 일뿐입니다. mywebsite는 전체 URL입니다. 저는 Watir을 사용하고 있습니다. 코드가 웹 사이트를 방문하기 때문에 활성 레코드의 코드 외부에 정의되어 있음을 알 수 있습니다. – Benjamin

관련 문제