鉴于以下内容,我如何在我的数据库中插入行?(或者我应该在我的架构中纠正什么?)
楷模:
class Item < ActiveRecord::Base has_many :tran_items has_many :transactions, :through => :tran_items end class TranItem < ActiveRecord::Base belongs_to :item belongs_to :transaction end class Transaction < ActiveRecord::Base #answer: rename Transaction has_many :tran_items has_many :items, :through => :tran_items end
架构:
create_table :items do |t| t.references :tran_items #answer: remove this line t.string :name end create_table :tran_items do |t| t.belongs_to :items, :transactions, :null => false #answer: unpluralize t.integer :quantity end create_table :transactions do |t| t.references :tran_items #answer: remove this line t.decimal :profit end
我试图插入记录几个小时,使用rails控制台来测试.
(编辑:模型名称"交易"可能会因ActiveRecord :: Transactions而导致一些问题.有一个灯塔票.)
您的架构未正确设置."references"是"belongs_to"的别名.物品和交易不属于 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
(编辑:make belongs_to singular)
您是否删除了数据库并重新运行迁移以构建新模式?
rake db:drop && rake db:create && rake db:migrate
这是我在控制台中得到的:
>> i = Item.create(:name => 'My Item') => #- >> t = Transaction.create(:profit => 100) => #
> >> t.tran_items.create(:item => i) => #