Naprawiłem to, pisząc migrację z wykonaniem SQL w następujący sposób:
class CreateAcctTransactions < ActiveRecord::Migration
def self.up
# create ACCT_TRANSACTIONS table
create_table "acct_transactions", id: false, force: true do |t|
t.integer "id", limit: 8, null: false
t.timestamp "date", null: false
t.text "description", limit: 255
t.decimal "amount", precision: 10, scale: 2, null: false
t.integer "account_id", limit: 8, null: false
t.integer "transaction_type_id", null: false
end
execute "ALTER TABLE acct_transactions ADD PRIMARY KEY (id);"
add_index "acct_transactions", ["account_id"], name: "fk_acct_transactions_accounts1_idx", using: :btree
add_index "acct_transactions", ["date", "id"], name: "BY_DATE", using: :btree
add_index "acct_transactions", ["transaction_type_id"], name: "fk_acct_transactions_transaction_types1_idx", using: :btree
end
def self.down
drop_table :acct_transactions
end
end
Zwróć uwagę na wykonaj oświadczenie @ linia 12. Kiedy tam byłem, zmieniłem również pole „data” na znacznik czasu, co i tak pierwotnie chciałem zrobić. Nie jest ładne i narusza „konwencję”, ale działa idealnie, więc mogę przejść dalej. Dzięki za uwagę.