【问题标题】:Specs for ActiveRecord::Migration helper methodActiveRecord::Migration 辅助方法的规范
【发布时间】:2012-11-25 10:46:39
【问题描述】:

我在ActiveRecord::Migration、ActiveRecord::ConnectionAdapters::TableDefinition 和ActiveRecord::ConnectionAdapters::Table 中添加了monetize 和demonetize 助手that pull request。

That file 显示使用示例。因此,您将一目了然地了解发明的变化。 (有效)

但我不知道如何测试我的助手。我可以用什么方式为他们编写规范?我在规范文件中编写迁移并手动运行它们的所有尝试都失败了。迁移手动运行没有更改表(或者我无法检测到更改)并且没有抛出任何异常。

我的尝试示例:

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  

【问题讨论】:

    标签: ruby-on-rails activerecord rspec migration


    【解决方案1】:

    这在控制台中对我有用:

    [4667]foo@bar:~/dev/ror/foo$ 导轨 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> 结束 => 无 irb(main):006:0> MyMigration.new.change -- create_table(:foo) (4.5ms) 选择 sqlite_version(*) (133.2ms)创建表“foo”(“id”整数主键自动增量不为空) -> 0.2362s => []

    【讨论】:

    • hmhm.. 我认为这是我的愚蠢错误:D 无论如何,我会在下周检查并更改问题状态。谢谢!
    【解决方案2】:

    您可以直接在数据库连接上执行任何迁移辅助方法:

    ActiveRecord::Base.connection.create_table :items
    

    感谢@happy_user 在第一次尝试中显示我的错误。我认为将来有人可能会使用我的最新解决方案,所以我将其留在这里。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-12
      • 1970-01-01
      • 1970-01-01
      • 2021-05-20
      相关资源
      最近更新 更多