Tag: 数据库

查找不存在关联记录的父记录

这是我所拥有的协会。 award_test.rb has_many :instructor_student_awards , :dependent => :destroy has_many :award_test_payment_notifications, dependent: :destroy instructor_student.rb has_many :instructor_student_awards, :dependent => :destroy has_many :awards, through: :instructor_student_awards has_many :award_test_payment_notifications, dependent: :destroy instructor_student_award.rb belongs_to :award belongs_to :instructor_student belongs_to :award_test award_test_payment_notification.rb belongs_to :award_test belongs_to :instructor_student schema.rb “award_tests” t.date “test_date” t.time “test_time” t.integer “award_id” t.decimal “test_fee” “award_test_payment_notifications” t.text “response_params” t.string “status” t.string “transaction_id” […]

Rails ActiveRecord和DB规范化

将可选的1:1属性分解为各自独立的模型有哪些优缺点。 例如,我刚刚遇到了这样的Rails代码: class Dogs << ActiveRecord::Base # :id (pk), :breed, :weight, :height, :tail_length end class DogSpotsInfo << ActiveRecord::Base # :dog_id (pk), :spot_color, :avg_spot_size, :num_spots end 但这就是我将如何做到这一点(必要时将spot字段保留为null): class Dogs << ActiveRecord::Base # :id, :breed, :weight, :height, :tail_length, :spot_color, :avg_spot_size, :num_spots end 在数据库级别,我认为唯一的区别是涉及可选属性的查询需要另一个连接吗? 前一种方法还有其他缺点吗? 有没有专业人士? 编辑: 我想在一张巨大的狗桌上,据说20%的狗有斑点,也许一个亲,前一种方法是更快的顺序扫描,但我不是100%肯定,如果这是唯一的亲,它似乎是过早的优化。 我能想到的另一个专业是它让模型更小更整洁。 但如果这是目标,也许你可以在不影响数据库结构的情况下通过使用像has_spots :spot这样的东西来做到这has_spots :spot ? 这里的最佳做法是什么?

如何故意在Mysql中插入错误编码的字符串?

这可能是我在Stackoverflow中要求的最奇怪的问题之一:) 我有一个遗留的,未经过测试的PHP应用程序,根本无法触及。 此应用程序使用Mysql和每个帐户一个数据库。 所以我们有数以千计的数据库。 由于在我开始处理之前出现了错误,这个应用程序在Mysql中连接了错误的编码。 所以在数据库中,我们应该有“é”,我们实际得到“Ô。 虽然在应用程序中(由于错误的连接编码),我们得到é。 我有一个Rails应用程序来管理帐户/数据库的创建。 问题是Rails应用程序正在使用正确的编码,当它创建数据库时,它将插入一些PHP应用程序无法正确读取的数据。 我的问题:考虑到我在Ruby中有一个字符串“é”,我该如何故意将其改为“é”? 我可以使用的任何string.encode? 注1:我无法转储所有数据库并修复此问题(这将是理想的解决方案) 注意2:我无法切换Rails连接编码,因为它使用另一个具有正确编码的数据库

从rails控制台获取“SQLite3 :: CorruptException:数据库磁盘映像格式错误”

我正在做Michael Hartl的rails屏幕播放教程,在第7章中,我试图将用户添加到数据库中,以便测试用户显示页面。 当我创建一个用户时,它会被一个SQLite3 :: CorruptException回滚:数据库磁盘映像格式错误。 对此错误的研究建议停止“后缀”过程,但我没有安装postfix。 有任何想法吗? 请注意,我是新手,这很可能是我的一个简单错误! 谢谢! 1.9.3p194 :009 > user = User.create(name: “dax”, email: “poo@foo.bar”, password: “lala”, password_confirmation: “lala”) (0.1ms) SAVEPOINT active_record_1 User Exists (0.2ms) SELECT 1 AS one FROM “users” WHERE LOWER(“users”.”email”) = LOWER(‘poo@foo.bar’) LIMIT 1 SQL (0.6ms) INSERT INTO “users” (“created_at”, “email”, “encrypted_password”, “name”, “salt”, “updated_at”) VALUES (?, ?, ?, […]

如何在sqlite中存储json数据

我很难将数据作为’JSON’格式存储到我的sqlite数据库中以用于rails应用程序。 我已经搜索了如何在我的sqlite数据库中将数据存储为JSON,但我没有看到许多有前景的替代方案。 谁可以指导我如何做到这一点?

如何为测试目的模拟数据库故障(在Ruby on Rails中)

通过某些监视工具(例如Monit)使用心跳消息使应用程序幸存下来是一种常见的设置。 如果应用程序正在运行并且一切正常,它将返回“我还活着”消息,如果数据库失败或Web服务器挂起,则返回任何内容或内部服务器错误(HTTP状态代码500)页面。 如何模拟数据库失败以在Ruby on Rails中测试此行为? 如果可以在测试( Test::Unit或RSpec )本身内为测试目的启用/禁用此function,那将是很好的。

为什么我不能成功使用rake db:drop或rake db:purge?

有效的命令: rake db:migrate rake db:rollback rake db:seed 不能执行的命令: rake db:drop rake db:drop:all rake db:migrate:reset rake db:purge 如果我使用db:rollback足够多次(或使用STEP),我的数据库会成功删除,但不会在我使用db:drop / db:drop:all时删除。 db:migrate:reset和db:purge保持所有数据不变。 通过数据库监视器运行跟踪,观察development.log,系统日志和查看数据库查询(似乎没有SQL查询为这些命令运行。)也没有错误。 运行: Rails 4.2 postgres 9.4 CentOS 7

如何使用不同的数据库模式管理git分支?

我有一个项目,我需要处理一个新function,需要重新设计部分数据库,同时保持主开发分支在旧模式上工作。 管理这样的项目的最佳实践是什么? 我想在处理新function时有一个单独的数据库,但意识到这需要将数据库配置检入存储库,这是不行的。 还有其他方法可以解决这个问题吗? 播种种子数据 在发布这个答案之后,答案就出现了 – 我应该有一些脚本用种子数据填充我的数据库。 这样我就可以在分支之间切换时删除/重新创建/播种数据库。

如何配置database.yml以部署到Heroku

我最近升级到最新版本的Rails,我不明白如何将应用程序部署到Heroku。 这是我的database.yml文件 default: &default adapter: postgresql pool: 5 timeout: 5000 development: <<: *default database: db/development.sqlite3 test: <<: *default database: db/test.sqlite3 production: <<: *default database: db/production.sqlite3 我之前从未在database.yml中看到过这种语法。 有谁知道如何配置这个? 它看起来与我以前有很多不同 development: adapter: mysql2 encoding: utf8 database: my_app_development pool: 5 username: root password: test: adapter: mysql2 encoding: utf8 database: my_app_test pool: 5 username: root password: production: adapter: mysql2 […]

如何在双边市场中构建关系表

我真的很想解决这个问题,会喜欢一些额外的想法。 这是基本的背景: Users既可以列出要借出的items ,也可以requests借用物品 Requests由想要借用某些内容的users发布。 每个request可能包含多个items Items是预定义的(即,POST表单是一个复选框),并由想要借出它们的users列出,然后由提交request其他users借用 工作流程: John是一名用户,并从6/5到6/8提交帐篷请求 控制器会查找拥有6/5到6/8可用帐篷的所有用户(除了John) 联系此用户列表以查看谁想为John提供帐篷 无论谁对约翰作出肯定回应,其表中的项目自动更新为6/5至6/8不再可用 John和其他用户连接以进行交换 到目前为止我的想法: Users表has_many :items和has_many :requests Requests表belongs_to :users Items表belongs_to :users 我的大脑无法处理的额外复杂性: 一个request可以包含多个items ,并且我被告知不要在一个单元格中接受items作为序列化数组,因此我不确定如何关联request和item 。 在上表中, items也belong_to requests ? 如果是的话,这似乎意味着user必须request特定item而我希望用户能够搜索帐篷,并查看所有可用帐篷的用户列表 Requests包含start_date和end_date属性,这些属性需要与item可用时进行比较。 现在我在items表中思考,需要有一个列存储项目将被使用的日期(即,不可用)。 但是这个数据将再次成为一个数组。 例如,可以请求帐篷(并且用户响应OK)从6/5到6/8,然后再从6/10到6/15,然后再从7/8到7/9。 所以我需要第四张桌子吗? Items将是预定义的列表,例如帐篷,睡袋,睡垫。 通过这种方式,我想知道我实际上需要与users建立has_and_belongs_to_many关系,因为帐篷可能属于许多用户,而用户可能有很多帐篷。 对不起,如果这听起来像是一个漫步…我已经坐在这里4个小时,有很多纸和涂鸦,这没有更清楚……