我有以下Rails迁移工作完美(删除不相关的部分):
create_table :comments do |t| t.text :body t.references :post end
现在我想author
在我的comments
表中添加一个列(这是用户的用户ID),但我不知道该怎么做(我很想用a编写特定于MySql的语法execute
).
我一直在看add_column 这里没有提到references
.我实际上找到了TableDefinition#引用,但我不知道如何将它与add_column
语句一起使用.
这可能吗?另外,对于MySql,"引用"功能是否真的没有在表之间建立关系?
虽然从这里得到任何积分已经太晚了,但我想我会为后人发布最好的方法:)
使用change_table
而不是create_table
将列添加到已存在的表中,具有所有TableDefinition优点:
self.up do change_table :comments do |t| t.references :author end end
这可能看起来微不足道,但是像Devise这样的其他宝石会大量使用自己的自定义表定义,这样你仍然可以使用它们.
add_reference :table_name, :reference, index: true
终于明白了
add_column :locations, :state_id , :integer, :references => "states"
首先,做:
script/generate migration AddAuthorIdToComments
打开生成的文件并添加以下行:
add_column :comments, :author_id, :integer
然后在您的模型文件中:
class User < ActiveRecord::Base has_many :comments, :foreign_key => "author_id" end class Comment belongs_to :author, :class_name => User end