【发布时间】:2018-04-26 03:50:07
【问题描述】:
我是 Rails 的新手,目前对于我们的课程,我们必须创建一个包含数据库的应用程序。
我有一堆表具有其他表的外键,我已经在迁移文件中定义了这些关联(使用 execute("ALTER TABLE...")),但在我的模型中没有定义(我在我的模型中只定义了 self.primary_key模型)。
我的问题是,既然我已经在我的迁移中设置了这些关联,我是否还必须在我的模型中设置这些关联(即has_may, belongs_to, validates_uniqueness_of 等)?
我将创建一个允许用户输入的应用,并将这些输入插入到数据库中。
希望能解开我的困惑。谢谢!
示例
迁移文件:
class CreateSchools < ActiveRecord::Migration[5.0]
def up
create_table :schools, {:id => false} do |t|
t.integer :school_id
t.string :school_name
t.string :contact_number
t.integer :a_id
t.timestamps
end
execute "ALTER TABLE schools ADD PRIMARY KEY(school_id);"
execute "ALTER TABLE schools ADD CONSTRAINT a_id UNIQUE(a_id);"
execute "ALTER TABLE schools ADD CONSTRAINT school_references_location FOREIGN KEY (a_id) REFERENCES locations(a_id) ON DELETE CASCADE ON UPDATE CASCADE;"
change_column_null :schools, :school_name, false
change_column_null :schools, :a_id, false
end
def down
execute "ALTER TABLE schools DROP PRIMARY KEY;"
execute "ALTER TABLE schools DROP FOREIGN KEY school_references_location;"
execute "ALTER TABLE schools DROP INDEX a_id;"
drop_table :schools
end
end
型号:
class School < ApplicationRecord
self.primary_key = :school_id
end
【问题讨论】:
-
是的,你需要在模式下定义关联
-
@Vishal 当我在模型中定义我的关联时,它会对迁移文件产生影响吗?
标签: ruby-on-rails model rails-migrations