迁移文件更改时需要更改模型吗?
Models need to be changed when migration files are changed?
我是 Rails 的新手,目前对于我们的 class,我们必须创建一个带有数据库的应用程序。
我有一堆表有其他表的外键,我已经在迁移文件中定义了这些关联(使用 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
是的,您还需要在模型中定义关联。
对于所有 rails 个申请,
根据关联迁移和更改数据库是第一步。
然后在模型中添加关联语句,以便可以使用简单的方法访问来自数据库的关联。像 user.posts
等
在模型中添加关联语句,为您提供根据调用的方法生成查询的方法,轻松从数据库中检索数据。如果您不想在模型中包含关联语句,也可以使用 join 和 select 语句查询数据库。
因此,简而言之,设计模式来管理关联是必要的,而在模型中提及它们则不是。但我们这样做是为了让我们的生活和代码更简单。
我是 Rails 的新手,目前对于我们的 class,我们必须创建一个带有数据库的应用程序。
我有一堆表有其他表的外键,我已经在迁移文件中定义了这些关联(使用 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
是的,您还需要在模型中定义关联。
对于所有 rails 个申请,
根据关联迁移和更改数据库是第一步。
然后在模型中添加关联语句,以便可以使用简单的方法访问来自数据库的关联。像
user.posts
等在模型中添加关联语句,为您提供根据调用的方法生成查询的方法,轻松从数据库中检索数据。如果您不想在模型中包含关联语句,也可以使用 join 和 select 语句查询数据库。
因此,简而言之,设计模式来管理关联是必要的,而在模型中提及它们则不是。但我们这样做是为了让我们的生活和代码更简单。