我在monetize
,demonetize
和ActiveRecord::Migration
内添加了ActiveRecord::ConnectionAdapters::TableDefinition
和ActiveRecord::ConnectionAdapters::Table
个助手{。{3}}。
that pull request显示了用法示例。因此,您将了解发明的变化。 (它有效)
但我不知道如何测试我的助手。我可以用什么方式为它们编写规格?我在spec文件中编写迁移并手动运行它的所有尝试都失败了。迁移手动运行没有更改表(或者我无法检测到更改)并且没有抛出任何异常。
我的尝试示例:
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
答案 0 :(得分:1)
这在控制台中对我有用:
[4667]foo@bar:~/dev/ror/foo$ rails c Loading development environment (Rails 3.2.9) irb(main):001:0> class MyMigration def change irb(main):003:2> create_table :foo irb(main):004:2> end irb(main):005:1> end => nil irb(main):006:0> MyMigration.new.change -- create_table(:foo) (4.5ms) select sqlite_version(*) (133.2ms) CREATE TABLE "foo" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL) -> 0.2362s => []
答案 1 :(得分:0)
您可以直接在数据库连接上执行任何迁移帮助程序方法:
ActiveRecord::Base.connection.create_table :items
感谢@happy_user在第一次尝试中显示我的错误。我想有人可能会在将来使用我的最新解决方案,所以我会留在这里。