Tag: postgresql

Rails 4 – 通过连接表条件查找对象

我有两个模型, User和Team ,它是一个many-to-many的连接表,名为Member 。 它的设置如下: #Team: has_many :members, dependent: :destroy has_many :users, through: :members #User has_many :members has_many :teams, through: :members #Member belongs_to :user belongs_to :team 我希望用户能够访问彼此的个人资料页面( controller: :users, action: :show )。 在个人资料页面上,我只想列出两个用户都是其成员的团队(他们也可以是不同团队的成员)。 我真的是这个: #UsersController def show @user = User.find(params[:id]) @teams = @user.teams.joins(:members).where(:members => { :user_id => current_user.id }) end 这不起作用(在某些情况下不显示任何团队,并且其他人显示错误的团队,总失败!) 那么,做我想要的正确方法是什么? 仅列出两个用户所属的团队?

PGError:错误:对象的AR查询及其has_many对象的WHERE子句中不允许聚合

在has_many关联上运行以下查询。 建议has_many批准。 我正在运行rails 3和PostgreSQL: Recommendation.joins(:approvals).where(‘approvals.count = ? AND recommendations.user_id = ?’, 1, current_user.id) 这将返回以下错误: https : //gist.github.com/1541569

无法在ubuntu上使用PostgreSQL连接Rails应用程序

我无法将My rails应用程序与在某个实例上运行的Ubuntu服务器上运行的PostgreSQL数据库连接。我使用以下命令创建了新用户和密码。 1-sudo -u postgres createuser -s user1 2-sudo -u postgres psql. 3-postgres=\\password userpass 检查我的database.yml文件,如下所示。 database.yml的: development: adapter: postgresql encoding: unicode database: 100sallon_development pool: 5 username: user1 password: ******* host: 10.*.*.* test: adapter: postgresql encoding: unicode database: 100sallon_test pool: 5 username: user1 password: ******* host: 10.*.*.* production: adapter: postgresql encoding: unicode database: 100sallon_production pool: 5 […]

检索具有空数组的记录时出现问题

我有一个大约100个用户的表,我也有一个用户ID数组。 我想要做的是显示所有不属于此用户ID数组的用户。 当我做这样的事情 User.where(‘id NOT IN (?)’, [9, 2, 3, 4]) 它成功返回用户id不属于该数组的记录。 但是,如果该数组是空的,那么 User.where(‘id NOT IN (?)’, []) 它不会返回任何用户,SQL查询看起来像这样 SELECT “users”.* FROM “users” WHERE (id NOT IN (NULL)) 有谁知道为什么会发生这种情况或者这可能是一个错误? 我正在使用Rails 3.2.5和PostgreSQL。

你已经拿破了包 – Postgres gem for rails

因此,当我尝试进行捆绑安装时,我被告知确保pg gem已成功安装,因此当我执行gem install pg vx.xx我得到: Building native extensions. This could take a while… ERROR: Error installing pg: ERROR: Failed to build gem native extension. /home/adam/.rvm/rubies/ruby-2.1.2/bin/ruby extconf.rb checking for pg_config… yes Using config values from /usr/bin/pg_config You need to install postgresql-server-dev-XY for building a server-side extension or libpq-dev for building a client-side application. You need to […]

查找不存在连接的记录

我可以根据用户是否对其进行投票来限制所有questions 。 在模型中: scope :answered_by, lambda {|u| joins(:votes).where(“votes.user_id = ?”, u.id) } scope :unanswered_by, lambda {|u| joins(:votes).where(“votes.user_id != ?”, u.id) } 在控制器中,我这样称呼它们: @answered = Question.answered_by(current_user) @unanswered = Question.unanswered_by(current_user) unanswered_by范围不正确。 我基本上想找到没有投票的地方。 相反,它试图寻找是否存在与当前用户不相等的投票。 任何想法如何返回不存在连接的所有记录?

如何将Heroku PG转储导入本地计算机

我正在尝试将我的生产Heroku数据库导入我的开发机器。 我的本地数据库是PostgreSQL。 首先,我将转储从Heroku导出到我的机器 curl -o latest.dump `heroku pgbackups:url` 然后,我尝试使用rake db:drop本地数据库,然后使用rake db:create再次创建空数据库。 我得到的问题是实际尝试将转储导入数据库 psql -d app_development -U myusername -f mydumpfile.sql 我开始看到这样的错误 psql:latest.dump:24: ERROR: syntax error at or near “PGDMP” LINE 1: PGDMP ^ psql:latest.dump:28: ERROR: syntax error at or near “” LINE 1: INCREMENT BY 1 ^ psql:latest.dump:36: ERROR: syntax error at or near “” LINE […]

无法在Mountain Lion上安装pg gem

升级到Mountain Lion后,我遇到了很多关于Rails的麻烦。 到目前为止,我试图在互联网上搜索这些并搜索几个小时,以确保我的系统具有升级后运行rails的所有依赖关系: 我更新了我的Homebrew安装 我更新了我的RVM安装 我安装了XCode命令行工具 我按照提到安装了GCC 我将我的Ruby版本升级为 ruby 1.9.2p290(2011-07-09修订版32553)[x86_64-darwin10.8.0] 我的Rails版本被validation为Rails 3.2.6 我还发现Mountain Lion与Postgres有一些问题,所以我看到这篇文章 ,发现我需要将这一行添加到我的Bash配置文件中: export PATH=”/usr/local/bin:/usr/bin:$PATH” 现在我转到我升级之前在Snow Leopard上运行正常的Rails应用程序,当我在命令行运行rails s时,我收到以下错误: AM@~/Documents/RailsWS/app0815 >gem install pg Building native extensions. This could take a while… ERROR: Error installing pg: ERROR: Failed to build gem native extension. /Users/AM/.rvm/rubies/ruby-1.9.2-p290/bin/ruby extconf.rb checking for pg_config… yes Using config values from /usr/bin/pg_config checking […]

所有在数组中的PostgreSQL

实现子句中最简单,最快速的方法是什么,必须匹配数组中的所有元素 – 使用IN时不仅仅是一个? 毕竟它应该像mongodb的$ all 。 考虑到conversation_users是conversation_id和user_id之间的连接表的群组对话我有类似这样的想法: WHERE (conversations_users.user_id ALL IN (1,2)) 更新 16.07.12 添加有关架构和案例的更多信息: join-table非常简单: Table “public.conversations_users” Column | Type | Modifiers | Storage | Description —————–+———+———–+———+————- conversation_id | integer | | plain | user_id | integer | | plain | 对话有很多用户,用户属于许多对话。 为了找到对话中的所有用户,我正在使用此连接表。 最后,我试图找出一个ruby on rails scope ,根据它的参与者找到我的对话 – 例如: scope :between, ->(*users) { […]

GroupingError:ERROR:列必须出现在GROUP BY子句中或用于聚合函数

我的控制器中的代码是按最高平均评价等级排名的专辑(此解决方案中使用的代码如何通过has_many评论关系显示评分最高的专辑 ): @albums = Album.joins(:reviews).select(“*, avg(reviews.rating) as average_rating”).group(“albums.id”).order(“average_rating DESC”) 这段代码在我的开发环境(sqlite3)中运行得很好,但是当我将代码推送到heroku和postgresql时,我遇到了这个错误: PG::GroupingError: ERROR: column “reviews.id” must appear in the GROUP BY clause or be used in an aggregate function 我意识到这是一个相当普遍的问题,我对SQL有点缺乏经验,所以我在重构代码时遇到了麻烦,因此它可以在我的开发和生产环境中工作。