问题标签 [schema.rb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
58 浏览

ruby-on-rails - 如何在同一张表之间做has_many和has_one?

我有一个表格联系人和一个表格实体。一个实体可以有多个联系人,而同一个实体应该存储一个特殊的联系人作为主管。

我在其他地方找不到任何直接的答案,但有这样的事情:

我怎样才能实现它并拥有来自 ActiveRecord 的 Entity.first.entity_contact 之类的东西?

非常感谢大家

0 投票
1 回答
44 浏览

ruby-on-rails - 将字段添加到迁移表后,方法值为“nil”而不是“true”或“false”

我在我的 schema.rb 文件中的“成员”表中添加了一个名为“custom_design_enabled”的字段,作为默认值为 true 的布尔值。当我尝试在 Rails 控制台中更改它时,它说该字段是“nil”而不是“true”或“false”。我认为我不小心遗漏了迁移过程的一部分,它为“custom_design_enabled”方法提供了一个值。谁能帮我解决这个问题?

0 投票
0 回答
39 浏览

mysql - 在迁移中使用我的 schema.rb 时,我收到关于 ID 字段的错误

免责声明:我知道这种rake db:schema:load方法,但我的组织长期以来一直忽略 git 存储库中的 schema.rb 状态,采用迁移方法比让整个团队改变他们的行为更容易。所以请假设我理解该方法的存在,并且我已经测量了它的可行性。请不要对 rails “应该完成”的方式发表评论,因为目前这对我来说不是一个有效可行的选择。

现在我把它从我的系统中拿出来了。

我在跑:

我的代码库使用迁移存档方法,我们定期将所有迁移压缩为一个迁移,该迁移实际上是schema.rb文件的快照,然后存档现有迁移。这在我们的本地和测试环境中执行,但不在我们的生产环境中执行。

最近我尝试使用这种方法,但是当我执行测试时,我得到了一堆这些错误:

为了这个问题,可以安全地假设我所有表上的 ID 字段都是使用 Rails 默认方法生成的,并且我没有id在迁移中手动指定。

生成的 schema.rb 生成这种类型的输出:

该块中没有 ID 字段的索引声明,所以我假设 Rails 为我假设了 ID 字段。

问题似乎是schema.rb定义没有假定AUTO_INCREMENTID 字段的默认值。

任何人对为什么会发生这种情况或如何解决它有任何想法?

提前致谢!

0 投票
1 回答
1021 浏览

ruby-on-rails - Rake db:setup 不运行 rails db:migrate, schema.rb 不存在错误

在 Rails 6 上,我希望rake db:setup执行db:createdb:migrate并且db:seed
我只有一个数据模型,并且它的表的记录创建是写在db/seeds.rb

database.yml还有一个新的用户凭证,它是通过sudo -u postgres createuser -s new_user

rake db:setup返回:

其中sudo -u postgres psql确实创建了数据库,但没有关系(没有种子表)

当我跑步时rails db:migrate

然后当我rake db:setup第二次运行时:

注意到数据库从一开始就已经存在,rake db:setup但现在它能够为表播种

我不明白为什么rake db:setup第一次运行在播种前没有进行必要的迁移

0 投票
2 回答
168 浏览

ruby-on-rails - Rails 6,切换Git分支后架构文件与迁移文件不匹配

Rails 6,使用 sqlite3 进行开发。

我的 schema.rb 有一个不应该存在的文件:没有迁移文件(在当前的git 分支上)说应该生成它。通过它的名字,我可以看到它来自我放弃的早期分支,并且没有回去尝试不同的方法来构建我的 rails 应用程序。

仔细检查:当我尝试访问 Rails 控制台中的表时出现名称错误,因此它仅存在于模式文件中,而不存在于数据库本身中。

我可以强制 rails 运行或确认当前架构与迁移文件匹配,如果不匹配,是否会运行迁移?

编辑/更新: 我需要澄清一下我有 6 个迁移文件,我检查过这些文件以确保它们都不是来自早期废弃的分支。

(管理员是有问题的表) ActiveRecord::Base.connection.tables 在rails命令行中生成: ["schema_migrations", "ar_internal_metadata", "events", "admins", "details"] 当我这样做时,Event我得到列名和类型。但是当我做管理员时,我得到

所以问题是:如何正确地将数据库重置为