Tag: postgresql

我如何计算Rails中工作表中的总票数

当我试图计算我在票数表中的总票数时,我很困惑。 serviceproviders has_many votes votes belongs_to serviceproviders 我试过这样的: sp = Serviceprovider.joins(:votes).group_by(&:id).count 但它没有得到正确的输出。 我想要的示例输出是: 如果在表中Jhon Doe在表中有5行投票,我可以在查询时得到总共5票。 可以任何给我的想法如何执行查询。 谢谢! 更新: 谢谢你的回答。 我在我的导轨c中试过这个。 vote = Vote.joins(:serviceprovider).group(:serviceprovider_id).count 我得到了结果: {108=>2, 109=>1} 我的问题如何获得前10名最高票?

Postgres:准备好的声明已经存在

我在我的Rails API应用程序中使用Devise进行身份validation。 有时我在日志中看到以下错误: ActiveRecord :: StatementInvalid:PGError:错误:准备好的语句“a3926”已经存在:UPDATE“users”SET“current_sign_in_at”= $ 1,“last_sign_in_at”= $ 2,“sign_in_count”= $ 3,“updated_at”= $ 4 WHERE“users”。 “id”= 12345 错误来自Devise: def update_tracked_fields!(request) old_current, new_current = self.current_sign_in_at, Time.now.utc self.last_sign_in_at = old_current || new_current self.current_sign_in_at = new_current old_current, new_current = self.current_sign_in_ip, request.remote_ip self.last_sign_in_ip = old_current || new_current self.current_sign_in_ip = new_current self.sign_in_count ||= 0 self.sign_in_count += 1 # error happens […]

在postgresql …查询中加入两个单独的查询…(可能或不可能)

我在postgresql查询中返回第一个X记录并获得了一些很好的帮助, 该查询具有我遇到的问题并尝试尽可能地优化的独特字段 (尽管我通常不是很喜欢前加载优化,这是一种独特的情况)。 想象一下应用中的三个实体: User Post Instance # An instance is just a reference to a post 字段看起来像这样: User id Post id user_id name Instance id user_id post_id helped_by_user_id 要求 : 返回10个实例,其中: user_id不等于3 post_id是独一无二的 post_id没有其他实例,help_by_user_id为3 编辑: 我在http://sqlfiddle.com/#!10/7a324/1/0上为此创建了一个SQLFiddle。 为了记录,我使用Ruby 1.9.3,Rails 3.2.13和Postgresql(Heroku)

嵌套查询在squeel中

简短版本:如何在squeel中编写此查询? SELECT OneTable.*, my_count FROM OneTable JOIN ( SELECT DISTINCT one_id, count(*) AS my_count FROM AnotherTable GROUP BY one_id ) counts ON OneTable.id=counts.one_id long版本: rocket_tag是一个为模型添加简单标记的gem。 它添加了tagged_with方法。 假设我的模型是User ,带有id和name,我可以调用User.tagged_with [‘admin’,’sales’] 。 在内部它使用这个吱吱声代码: select{count(~id).as(tags_count)} .select(“#{self.table_name}.*”). joins{tags}. where{tags.name.in(my{tags_list})}. group{~id} 哪个生成此查询: SELECT count(users.id) AS tags_count, users.* FROM users INNER JOIN taggings ON taggings.taggable_id = users.id AND taggings.taggable_type = ‘User’ […]

Rails 5 db migration:如何修复ActiveRecord :: ConcurrentMigrationError

之前的rake db:rollback停滞不前。 现在,在尝试新迁移时,我们收到以下错误: rake aborted! ActiveRecord::ConcurrentMigrationError: Cannot run migrations because another migration process is currently running. /home/me/.rvm/gems/ruby-2.4.1@global/gems/activerecord- 5.1.4/lib/active_record/migration.rb:1315:in `with_advisory_lock’ /home/me/.rvm/gems/ruby-2.4.1@global/gems/activerecord-5.1.4/lib/active_record/migration.rb:1148:in `migrate’ /home/me/.rvm/gems/ruby-2.4.1@global/gems/activerecord-5.1.4/lib/active_record/migration.rb:1007:in `up’ /home/me/.rvm/gems/ruby-2.4.1@global/gems/activerecord-5.1.4/lib/active_record/migration.rb:985:in `migrate’ /home/me/.rvm/gems/ruby-2.4.1@global/gems/activerecord-5.1.4/lib/active_record/tasks/database_tasks.rb:171:in `migrate’ /home/me/.rvm/gems/ruby-2.4.1@global/gems/activerecord-5.1.4/lib/active_record/railties/databases.rake:58:in `block (2 levels) in ‘ /home/me/.rvm/gems/ruby-2.4.1/gems/rake-12.1.0/exe/rake:27:in `’ /home/me/.rvm/gems/ruby-2.4.1/bin/ruby_executable_hooks:15:in `eval’ /home/me/.rvm/gems/ruby-2.4.1/bin/ruby_executable_hooks:15:in `’ Tasks: TOP => db:migrate (See full trace by running task with –trace) 我们正在使用Postresql

使用Rails,如何查询数据库以获取总数并按周分组?

给出一个像这样的表格: 日志: id, user_id, points, created_at 使用Rails,我如何通过user_id查询数据库,然后通过created_at逐周查询GROUPED,然后我可以使用以下内容: WEEK of X/XX/XXXX – 3011 total points WEEK of X/XX/XXXX – 320 total points WEEK of X/XX/XXXX – 31 total points WEEK of X/XX/XXXX – 30330 total points 谢谢

rails pg db for Devise Users的undefined方法`database_authenticatable’

undefined method database_authenticatable’ for # 迁移是: class DeviseCreateUsers false t.recoverable t.rememberable t.trackable t.timestamps end add_index :users, :email, :unique => true add_index :users, :reset_password_token, :unique => true end def self.down drop_table :users end end

如何将模型的整数属性映射到字符串?

我的数据库中有一个Hotels表,其中一列是:status ( integer )。 我想将这些整数转换成字符串,所以1 = “Awaiting Contract” , 2 = “Designing”等等…… 我已经搜索了Stack的一些答案,而缺少它们让我觉得我是从错误的角度来解决这个问题的? 我以前在PHP中执行此操作同时提取数据。 新的Rails,所以任何帮助,或最佳实践建议将非常感激。

使用ruby将存储为signed的无符号整数转换回原始值

一个C程序将它认为是64位无符号整数的东西放入Postgres数据库中的一个列,该数据库被输入为int8。 对于Postgres,int8始终是’signed int8’(没有像’unsigned int8’那样)。 所以我的Ruby程序显示从该空间的上半部分中的Postgres检索到的数字为负数。 在Ruby中,采用-ve整数并将其转换为C程序员打算使用的64位无符号整数的正确方法是什么?

ruby sequel gem – 如何使用pg_array扩展名查询数组

我正在使用pg_array扩展和续集版本4.1.1。 我添加了这样的扩展名: Sequel::Database.extension :pg_array 我创建了一个这样的列: alter_table :emails do add_column :references, “text[]”, null: true end 我可以将数组加载和检索到postgress数组列,就像使用普通数组一样。 从上面的链接中不清楚的是如何根据此数组列中的值执行查询。 例如,如果电子邮件表中的一行包含引用列中的这些值: references ——————————————————————– {} {5363f773bccf9_32123fe75c45e6f090953@Pauls-MacBook-Pro.local.mail} 如何查询电子邮件表以查找包含上述值的引用数组值的行: Email.where(references: ????)