以下是客户:
class CreateCustomer < ActiveRecord::Migration
def self.up
create_table :customers do |t|
t.column :email, :string, :null => false
end
end
def self.down
drop_table :customers
end
end
这是客户信息:
class CustomerInfo < ActiveRecord::Migration
def self.up
create_table :statuses do |t|
t.column :statuses, :string, :null => false
end
end
def self.down
drop_table :status
end
end
我想做的是客户和客户信息有一对一的关系。如何在新的迁移中执行此操作?谢谢。
答案 0 :(得分:0)
当你想在Rails中使用1比1时,你必须决定哪个模型将存储外键。在您的情况下,您可能希望状态存储fk,因此将名为customer_id
的整数列添加到状态表中。然后,您可以在客户和状态上添加has_one
/ belongs_to
。 belongs_to
总是使用外键进入模型。
另外我不确定Rails是否会喜欢用单数名称来调用你的表格,所以你可能需要做一些额外的工作,如果你真的想把它称为'状态'而不是'状态'
答案 1 :(得分:0)
您可以在下次迁移中尝试关注事物
add_column:customer_infos,:customer_id,:integer,:references =&gt;“customers”,:null =&gt;:true
然后你可以在Customer和Cusomer_infos上添加has_one / belongs_to。
您也可以执行SQL语句。
statement =“ALTER TABLE users CHANGE id id SMALLINT(5)UNSIGNED NOT NULL AUTO_INCREMENT”ActiveRecord :: Base.connection.execute(statement)
您可以在迁移中手动输入
请注意,这只是一个例子。最终的SQL语句语法取决于数据库。