我有一个订单数据库,我正在尝试向其添加两个新字段
1)seller_id 2)buyer_id
当我运行命令
时rails生成迁移AddFieldstoOrders buyer_id:整数seller_id:整数
显示
invoke active_record
create db/migrate/20140414094632_add_fieldsto_orders.rb
运行rake dd:migrate和rails后显示
== 20140414094632 AddFieldstoOrders:迁移================================ == 20140414094632 AddFieldstoOrders:migrated(0.0000s)=======================
它应该给我Seller_id表和buyer_id表。我通过sqlite数据库模型查看器仔细检查了订单数据库模型,并且两个字段都没有出现
这两个字段已添加到我的user.rb和order.rb模型
user.rb
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
validates :name, presence: true
has_many :listings, dependent: :destroy
has_many :sales, class_name: "Order", foreign_key: "seller_id"
has_many :purchases, class_name: "Order", foreign_key: "buyer_id"
end
order.rb
class Order < ActiveRecord::Base
validates :address, :city, :state, presence: true
belongs_to :listing
belongs_to :buyer, class_name: "User"
belongs_to :seller, class_name: "User"
end
我已成功将订单ID添加到订单数据库中 rails生成迁移AddListingIdToOrders listing_id:整数但现在我无法添加seller_id和buyer_id字段
迁移文件
class AddFieldstoOrders < ActiveRecord::Migration
def change
end
end
答案 0 :(得分:3)
应该是:
rails generate migration AddFieldsToOrders buyer_id:integer seller_id:integer
你有AddFieldstoOrders,应该是AddFieldsToOrders
所以现在你有两个选择。
选项1
再次运行命令,即
rails generate migration AddFieldsToOrders buyer_id:integer seller_id:integer
选项2
编辑迁移,即
add_column:orders,:buyer_id,:integer
add_column:orders,:seller_id,:integer
答案 1 :(得分:2)
如果没有看到实际的迁移文件:db/migrate/20140414094632_add_fieldsto_orders.rb
,则问题在于t
上的小写toOrders
。
您应该运行的命令是:
rails generate migration AddFieldsToOrders buyer_id:integer seller_id:integer
会生成一个迁移文件db/migrate/20140414094632_add_fields_to_orders.rb
(请注意额外的下划线)
您应该执行以下操作来解决此问题:
rake db:rollback
rails generate migration AddFieldsToOrders buyer_id:integer seller_id:integer
rake db:migrate
然后删除原来的db/migrate/20140414094632_add_fieldsto_orders.rb
。回滚只是输入数据库中的schema_migrations
表,使其更清晰。