1

私は小さなrubyスクリプトを作成しました。このスクリプトは、それ自体をmysqlデータベースに接続し、テーブルを作成します(このテーブルがまだ存在しない場合)。この後、スクリプトはこのテーブルにコンテンツを保存する必要があります。次を使用してこのデータを保存しようとします。

Table.create(:foo => "bar", :foobar => "something", :blallala => "blololl") 

私も試しました

Table.new(:foo => "bar", :foobar => "something", :blallala => "blololl") 

しかし、私は常にエラーが発生するため、同じように見えます。

Mysql :: Error:Table'my-username.my-dbname'が存在しません:SHOW FULL FIELDS FROM table-name

だからこれは私がこれまでに得たものです:

 ActiveRecord::Base.establish_connection(
                :adapter => "mysql",
                :host => "localhost",
                :username => "my-username",
                :password => "my-password",
                :database => "my-db-name",
                :encoding => "UTF8"
        )

        table_name = "my_table"
        unless ActiveRecord::Base.connection.tables.include? table_name
                ActiveRecord::Schema.define do
                        create_table :"#{table_name}" do |table|
                                table.column :foo, :string
                                table.column :bar, :string
                                table.column :blallala, :string
                        end
                end
        end

        class Table < ActiveRecord::Base
                self.table_name = "#{table_name}"
        end

         Table.create(:foo => "bar", :foobar => "something", :blallala => "blololl")
         #Table.new(:foo => "bar", :foobar => "something", :blallala => "blololl")

したがって、質問は次のとおりです。実際に列/行を作成するにはどうすればよいですか。また、なぜ機能しTable.create(:foo => "bar", :foobar => "something", :blallala => "blololl")ないのですか。

4

1 に答える 1

1

これは私のために働いた:

# establish connection here

class Table < ActiveRecord::Base
  self.table_name = "the_table"
end

unless Table.table_exists?
  ActiveRecord::Schema.define do
    create_table :the_table do |table|
      table.column :foo, :string
      table.column :bar, :string
      table.column :blallala, :string
    end
  end
end


Table.create(:foo => "bar", :bar => "something", :blallala => "blololl")
于 2012-05-05T13:55:46.243 に答える