(редактировать: название модели «Транзакция» может вызвать некоторые проблемы из-за ActiveRecord :: Transactions. Есть билет на маяк .)
Ваша схема настроена неправильно. «Ссылки» - это псевдоним «принадлежат». Предмет и транзакция не принадлежат trans_items, каждый из них has_many trans_items (в соответствии с вашими моделями)
create_table :items do |t|
t.string :name
end
create_table :tran_items do |t|
t.belongs_to :item, :transaction, :null => false
t.integer :quantity
end
create_table :transactions do |t|
t.decimal :profit, :default => 0
end
(редактировать: сделать принадлежащим - в единственном числе)
Вы сбросили базу данных и повторно запустили миграции, чтобы построить новую схему?
rake db: drop && rake db: create && rake db: migrate
Вот что я получаю в консоли:
>> i = Item.create(:name => 'My Item')
=> #<Item id: 2, name: "My Item">
>> t = Transaction.create(:profit => 100)
=> #<Transaction id: 2, profit: #<BigDecimal:2411d2c,'0.1E3',4(8)>>
>> t.tran_items.create(:item => i)
=> #<TranItem id: nil, item_id: 2, transaction_id: 2, quantity: nil>