Активная запись, записывающая переменную в mysql с помощью ruby - PullRequest
1 голос
/ 01 августа 2011

Я хочу выполнить несколько тестов в пределах одного URL-адреса, возможно, несколько разных URL-адресов.

У меня есть код, который работает и записывает в мою базу данных 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

Где "a" - это массив переменных. И «мой сайт» меняется в начале каждого теста. тесты проходят и повторяются для каждого значения 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)

Ответы [ 2 ]

1 голос
/ 01 августа 2011

Я все еще думаю, for x in a.each do избыточно, но, похоже, работает ...

Позвольте мне снова ответить на ваш вопрос. Кажется, проблема в том, что вы не закрыли определение своего класса.

Это означает, что в определении класса находится следующее, где x не определено:

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

Чтобы это исправить, вы должны закрыть определение класса перед вызовом Rubyist.create:

if browser.text.include?(x.chomp)
  class Rubyist < ActiveRecord::Base; end
  Rubyist.create(:name => x, :city => mywebsite)
end
0 голосов
/ 01 августа 2011

Символы, заключенные в одинарные или двойные кавычки, представляют собой строку.Поскольку ваша переменная называется x, просто назовите ее вместо того, чтобы заключать ее в кавычки.

Rubyist.create(:name => x, :city => mywebsite)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...