小编Sam*_*son的帖子

PG::InvalidColumnReference: 错误:对于 SELECT DISTINCT,ORDER BY 表达式必须出现在选择列表中

我有很长的关联链、连接链、排序依据等,它们最终是从我的一个 Rails 模型中进行选择的。在一天结束时,我需要结果是唯一的和排序的。我不在乎在 SELECT 语句中使用了哪些列,在 ORDER BY 中出现了什么(这些都根据用户选择的过滤选项而变化),我只关心顶层模型/表查询是唯一的(基于 id)。

对于背景,widgets是主表,我们正在加入widget_steps,这是在 Rails 3 中(公司正在尝试尽快升级,但这就是他们目前所坚持的)

这是正在生成的查询和错误:

PG::InvalidColumnReference: ERROR:  for SELECT DISTINCT, ORDER BY expressions must appear in select list
LINE 1: ...completed_at" IS NULL)) ORDER BY sequential DESC, widget_s...
                                                             ^
: SELECT  DISTINCT "widgets".* FROM "widgets" INNER JOIN "widget_steps" ON "widget_steps"."widget_id" = "widgets"."id" INNER JOIN "widget_steps" "active_steps_widgets" ON "active_steps_widgets"."id" = "widgets"."active_widget_step_id" WHERE "widgets"."account_id" = 1 AND "widgets"."completed_at" IS NULL AND (("widgets"."sequential" = 't' AND "widget_steps"."assigned_to" = 5 AND …
Run Code Online (Sandbox Code Playgroud)

postgresql activerecord ruby-on-rails arel

7
推荐指数
1
解决办法
7355
查看次数

使用除us-central1以外的区域用于Google Cloud Functions

据我所知,Google Cloud Functions仅在us-central1中可用,因为选择区域的下拉菜单只允许我选择us-central1,当我尝试使用区域不同的东西编写自己的部署脚本时像us-east4这样的选项,部署失败了.是这样的吗?是否有一些隐藏的方法可以在us-east4或其他地区创建云功能?

更新:链接的问题为Firebase澄清了这一点,但我希望看到云功能的正式答案.根据我在网上找到的内容,我的猜测是,在Cloud Functions不在测试阶段之前,它只能在us-central1中使用.

google-cloud-platform google-cloud-functions

6
推荐指数
2
解决办法
2768
查看次数

rails 4 不在资产文件名中使用摘要,而仅在生产中使用

我有一个 Rails 4 应用程序,它最近进行了大量升级(在 gem 版本和其他一些东西方面)。部署工作正常,但是一旦我们清除了我们的 tmp 目录,我们就会注意到资产在生产中停止工作。发生的事情是出于某种原因在生产模式下,助手没有在任何资产文件名中使用摘要(例如,/javascripts/application.js而不是/javascripts/application-some-digest.js)。这会导致这些资产变为 404,因为它们确实存在于public目录中,并带有其正确的摘要名称,并且 Google App Engine 被设置为独立为公共目录提供静态文件(这一直工作正常)。然而,真正奇怪的是,在暂存模式下,应用程序一切正常,因此我们的生产环境中有一些东西使助手不使用摘要。

然而,更奇怪的是,如果我去RAILS_ENV=production rails consolehelper.asset_path 'application.js'我会得到正确的文件名和摘要。这到底是怎么回事?

是的,我们RAILS_ENV=production rake:assets:precompile在部署之前正在做。

以下是来自的相关部分config/environments/production.rb

  config.eager_load = true
  config.assets.cache_store = :dalli_store
  # Don't force SSL because we need non-ssl cookies.
  config.force_ssl = false
  config.stripe_livemode = true
  config.assets.digest = true
  config.assets.compile = false
Run Code Online (Sandbox Code Playgroud)

以下是来自的相关部分config/environments/shared.rb

  # Disable Rails's static asset server (Apache or nginx will already do this)
  config.serve_static_files = false …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails sprockets ruby-on-rails-4

6
推荐指数
0
解决办法
213
查看次数

使用带有活动记录的连接表时如何连接模型的多个实例?

这适用于使用 PostgreSQL 的 Rails 5 / Active Record 5。

假设我有两个模型:ProductWidget. 一个Product has_many小部件和Widget has_many通过产品连接表叫products_widgets

我想写发现,与相关联的所有产品的查询与小部件id=37 ,并与小部件id=42

我实际上有一个 id 列表,但是如果我能写出上面的查询,我一般可以解决这个问题。

请注意,此查询的版本更容易是找到与相关联的所有部件要么与小部件id=37 与窗口小部件id=42,你可以写如下:

Product.joins(:products_widgets).where(products_widgets: {widget_id: [37, 42]})

但这不是我需要的。

postgresql activerecord ruby-on-rails inner-join subquery

4
推荐指数
1
解决办法
95
查看次数