0

中にヘルパーを追加monetizeしました。そのプルリクエストによって。demonetizeActiveRecord::MigrationActiveRecord::ConnectionAdapters::TableDefinitionActiveRecord::ConnectionAdapters::Table

そのファイルは使用例を示しています。したがって、発明された変更を一目で理解できます。(できます)

しかし、ヘルパーをテストする方法がわかりません。それらの仕様をどのように書くことができますか?スペックファイルに移行を書き込み、手動で実行しようとしても失敗しました。移行の手動実行ではテーブルが変更されず(または変更を検出できませんでした)、例外もスローされませんでした。

私の試みの例:

describe 'monetize' do
  class MonetizeMigration < ActiveRecord::Migration
    def change
      create_table :items
      monetize :items, :price
    end
  end

  class Item < ActiveRecord::Base; end

  it 'should monetize items' do
    MonetizeMigration.up    #=> nil
    Item                    #=> Item(has no table)
  end
end  
4

2 に答える 2

1

これはコンソールで私のために働いた:

[4667] foo @ bar:〜/ dev / ror / foo $ rails c
開発環境のロード(Rails 3.2.9)
irb(main):001:0> class MyMigration def change
irb(main):003:2> create_table:foo
irb(main):004:2>終了
irb(main):005:1>終了
=>nil
irb(main):006:0> MyMigration.new.change
--create_table(:foo)
   (4.5ms)sqlite_version(*)を選択
   (133.2ms)CREATE TABLE "foo"( "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL)
   -> 0.2362s
=> []
于 2012-11-25T13:18:39.143 に答える
0

データベース接続で任意の移行ヘルパーメソッドを実行できます。

ActiveRecord::Base.connection.create_table :items

最初の試みで私の間違いを示してくれた@happy_userに感謝します。将来、誰かが私の最新のソリューションを使用する可能性があると思うので、ここに残しておきます。

于 2012-11-26T08:15:55.653 に答える