Tag: 数据库

如何遍历所有记录并将数据库值传递给变量?

我有两个表,“Que”和“Opts”。 我想遍历Que中的所有记录并将它们添加到变量rikt_nr , start_nr和end_nr ,因为它们将位于URL的末尾,如下所示: api.url.number=8-00001 如何让它迭代通过Que并将rikt_nr , start_nr和end_nr传递给其余的代码? Que表包含以下字段: create_table “ques”, force: true do |t| t.integer “rikt_nr” t.integer “start_nr” t.integer “end_nr” t.datetime “created_at” t.datetime “updated_at” end 和Opts有这些领域: create_table “opts”, force: true do |t| t.string “numbers” t.string “operator” t.datetime “created_at” t.datetime “updated_at” end 这是代码: Que.all.each do | que | url = “http://api.url.number=” que.rikt_nr = rikt_nr […]

Rails – 使用现有数据库,无法在不丢失数据的情况下运行迁移

我是一个使用Rails 4.1的初学者。 我正在尝试在开发环境中将现有的sqlite3 db与我的应用程序集成。 为了让这个工作起作用,我遵循了Joel Berghoff 博客 (针对MySQL)中列出的步骤: 在config / database.yml中引用db 运行“rake db:schema:dump” 将schema.rb转换为db / migrate / 001_create_database.rb 我面临的问题是,每当我运行“rake db:migrate”时,整个数据库都会刷新并丢失所有预先填充的数据。 我通过首先运行迁移,然后替换使用预先填充的副本生成的空白数据库来解决这个问题一段时间 – 这使我可以在rails控制台中使用我的模型并查看数据。 但是,当我尝试在本地计算机上启动服务器时,我收到一条消息,指出迁移正在等待处理。 我不太清楚在这里做什么…我已经读过我应该从“rake db:seed”播种数据库,但是我现有的数据库非常大 – 几乎是1mm的记录,当我尝试这个时(虽然很笨拙,但在我放弃之前它跑了3个多小时。 任何关于如何进行的指导都非常感谢!

如何在Ruby on Rails中有效地使用多个数据库表

我给自己一个小项目来帮助我改进我的ruby on rails编程。 到目前为止,我已完成完整的用户注册和身份validation密码重置,记住我的function和通知电子邮件。 我完全理解发生了什么。 所以我现在已经转移到用户帐户区域,并希望对用户编辑其个人资料的页面进行编码。 我的注册表只询问用户名,电子邮件和密码,因为我想快速注册。 对于用户将编辑其个人资料信息的页面,它将询问他们以下内容: 名字姓氏出生日期的位置它将有关于我个人统计数据的个人资料以及他们的照片 他们应该能够动态更新或更改此信息。 在他们的实际个人资料页面上,它会提取他们的个人资料内容。 我想知道保持井井有条,最好是为这个例如配置文件创建一个单独的表吗? 或者将这些信息存储在数据库的users表中是否明智,例如名字姓? 我正试图找出一种干净的方法来做到这一点,因为稍后我需要添加更多页面,如设置页面等。 这是我第一次使用多个表,我知道如何做但不太确定。 任何建议,如简要说明如何实现这一点,将不胜感激。 问候

Rails 3,锁定拍卖类型引擎上的表格

我正在Rails 3中构建类似拍卖的系统(使用PostgreSQL作为数据库)。 想象一下,你有一个产品。 产品有很多出价。 我担心当两个不同的用户同时点击“出价”时会发生什么(假设我至少有2个应用服务器,并且他们同时点击服务器)。 我有两个可接受的行为: 其中一个“胜利”,另一个收到错误消息 其中一个“胜利”,另一个出价是下一个(每个出价加上0.01欧元的价格)。 因此,重复所有并​​发出价直到创建 所以我的问题是:如何在Rails 3上处理这个问题? 我认为使用常规交易还不够,或者是这样吗?

Ruby on Rails – sqlite 3 rake迁移不更新数据库

我使用的是RoR(3.2.2)和SQLite 3(1.3.5)。 当我最初生成模型时,我能够成功创建数据库。 但是,每当我尝试使用迁移生成器时,它似乎在命令行中没有任何问题(没有错误),但是当我检查数据库时,没有任何更新或更改。 例如,我创建了这个数据库: $ rails generate model User name:string email:string 分贝/迁移/ [时间戳] _create_users.rb class CreateUsers < ActiveRecord::Migration def change create_table :users do |t| t.string :name t.string :email t.timestamps end end end 我运行迁移: $ bundle exec rake db:migrate 到目前为止,我使用SQLite数据库浏览器检查我的数据库,一切看起来都应该如此。 然后,如果我想添加一个索引: $ rails generate migration add_index_to_users_email 分贝/迁移/ [时间戳] _add_index_to_users_email.rb class AddIndexToUsersEmail < ActiveRecord::Migration def change […]

rails有效记录查询一起列出的2个属性

我想创建一个索引任务站点,并希望在同一列表中列出所有任务(模型中的传入名为execu_tasks和模型中的传出名为assigned_tasks),基于created_at进行混合。 使用以下代码,我可以为传入和传出任务创建彼此之间的2个单独列表,但看起来不太好。 我甚至不确定是否应该在模型,控制器或视图中进行一些更改。 task.rb belongs_to :assigner, class_name: “User” belongs_to :executor, class_name: “User” user.rb has_many :assigned_tasks, class_name: “Task”, foreign_key: “assigner_id” has_many :executed_tasks, class_name: “Task”, foreign_key: “executor_id” tasks.controller.rb def index @user = current_user @assigned_tasks = @user.assigned_tasks.order(“created_at DESC”) @executed_tasks = @user.executed_tasks.order(“created_at DESC”) end 任务/ index.html.erb

我怎样才能修改我的MySQL密码,以便我可以在db上创建db:create?

我非常喜欢这一切。 当我db:rake create时,我得到以下内容:访问被拒绝用户’root’@’localhost’(使用密码:NO)。 请提供mysql安装的root密码> rake aborted! 没有密码设置。 我整天都在stackoverflow和谷歌搜索。 我甚至为它设置了密码并试了一下。 是的,我去过http://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html#resetting-permissions-unix 但是,当我按照说明重置密码时,终端和我自己无法找到.pid文件! 我已经尝试将mysqld_safe与–skip-grant-tables选项一起使用,并结束了这个: 110821 23:32:22 mysqld_safe用/ usr / local / var / mysql中的数据库启动mysqld守护进程rm:/tmp/mysql.sock:权限被拒绝110821 23:32:24来自pid文件的mysqld_safe mysqld / usr / local / var / mysql / Tony-Ngs-MacBook-Air.local.pid结束了

Rails中有多个has_many关联

假设您有两个可以以不同方式关联的模型: 用户有许多他们创建的对话。 (一对多)用户有许多他们参与的对话。 (很多很多) 我的第一个想法是在对话表中存储创建对话的用户的ID,并将对话中涉及的用户关联到连接表中。 class User < ActiveRecord::Base has_many :conversations has_and_belongs_to_many :conversations end class Conversation < ActiveRecord::Base belongs_to :user has_and_belongs_to_many :users end 这似乎是在寻找麻烦。 这样做的正确方法是什么? 基本上我希望能够为所涉及的人使用user.conversations,并为用户启动的那些人使用user.started_conversations。 谢谢。

Ruby on Rails和Active Record独立脚本在数据库值上不同意:timestamps

我今天早些时候发布了一个问题,当时我还没有对这个问题进行过调整。 我会在这里更简洁。 我在Windows上使用MySQL运行RoR 2.1.2。 SQL Server的本机时区是UTC。 我当地的时区是太平洋(-0800) 我有一个带有:timestamp类型列的模型,我可以使用以下方法执行以下操作: record = Record.find(:first) record.the_time = Time.now() 当我在数据库中执行“select * from records”时,显示的时间是我当地时间提前8小时,这是正确的,因为数据库是在UTC上。 (我已经通过简单的’select now()’和’select utc_timestamp()’来validation它是’在utc中思考’) 这就是麻烦开始的地方。 如果我在视图中显示时间: …然后我回到正确的时间,以UTC格式显示。 如果我在当地时间16:40:00写入数据库,则数据库显示00:40:00。 但是,如果我运行的是独立脚本: record = Record.find(:first) puts record.the_time …然后我回到我存储在数据库中的UTC时间(00:40:00),但是使用本地时区: Wed Nov 26 00:40:00 (-0800) 2008 ……八小时的时间扭曲 为什么存储时间会正确地转换它,但检索它不是吗? 如果我比较数据库中最近过去的存储时间并将其与当前时间进行比较,则当前时间较少 – 告诉我这不仅仅是字符串转换问题。 有任何想法吗?

Rails中的聚合迁移

我有几十个Rails数据库迁移,写了一年多。 有没有办法将它们聚合到一个迁移,以便我只看到数据库的完整DDL语句,因为它现在存在? 我只需要当前的快照,没有我们如何达到它的所有历史记录。