Rails:活动记录查询条件仅在声明为 sql 时才有效——使用 Globalize gem

市场

不确定是否有您知道的解决方法,但是在使用 globalize gem 时

class Menu < ActiveRecord::Base

  translates :name
  # other stuff ... 

end 

如果我按照标准编写活动记录查询,它会生成一个空集。

-- 一般情况下

Model.where(attribute: "Value")

不起作用,在哪里

Model.where('attribute = ?', 'Value')

确实有效。

--- 来自我的 Menu 模型控制台的真实示例:

2.3.0 (main):0 > Menu.where(name: "Lunch Boxes")
=> []
2.3.0 (main):0 > Menu.where('name = ?', "Lunch Boxes")
=> [#<Menu:0x007fbab6dc6838 id: 12, restaurant_id: 15, name: "Lunch Boxes", created_at: Wed, 05 Jul 2017 16:07:20 EDT -04:00, updated_at: Thu, 10 Aug 2017 14:48:38 EDT -04:00>]

谁能告诉我为什么会这样?

只是为了更好的衡量

轨道 4.2.6 红宝石 2.3.0

市场

谢谢@mu-is-too-short - 不知道我自己要花多长时间才能弄清楚。

弄清楚发生了什么的技巧是将我与 sql 比较的两个命令转换为两个命令,这样我就可以确切地看到正在尝试的内容。

Menu.where(name: "Lunch Boxes").to_sql
Menu.where('name = ?', "Lunch Boxes").to_sql

这些分别产生:

=> "SELECT \"menus\".* FROM \"menus\" WHERE (name = 'Lunch Boxes')"

=> "SELECT \"menus\".* FROM \"menus\" INNER JOIN \"menu_translations\" 
  ON \"menu_translations\".\"menu_id\" = \"menus\".\"id\" WHERE 
  \"menu_translations\".\"name\" = 'Lunch Boxes' AND 
  \"menu_translations\".\"locale\" = 'fr'"

然后我直接在 psql 控制台中运行查询,并返回一个空集。因为它加入了 menu_translations 表,所以可以通过使用 Globalize gem 附带的模型助手来实现,即:

 translates :name

SO然后我查看了翻译表,发现“Lunch Boxes”这个词不存在任何翻译,并且因为该属性name是全球化的,所以需要翻译。

添加翻译,问题解决。希望这对其他人有帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法使用globalize 4.0.2 ruby gem使f.globalize_fields_for出现

来自分类Dev

Powershell 脚本仅在存在断点时才有效

来自分类Dev

页面上的自动滚动仅在 ctrl+单击使用 jquery 的按钮时才有效

来自分类Dev

数据绑定仅在 select ng-options 中使用 as 语法时才有效

来自分类Dev

在Globalize gem下加载翻译数据

来自分类Dev

使用字典进行for循环,但仅在键为单个字符时才有效

来自分类Dev

将 Kendo Grid 页面大小设置为变量仅在使用 parseInt(Variable) 时才有效?

来自分类Dev

使用基本身份验证的存储库身份验证仅在嵌入 URL 时才有效

来自分类Dev

媒体查询断点仅在启用触摸模拟时才有效

来自分类Dev

Rails ::使用FriendlyId,Globalize和slug_candidates生成块

来自分类Dev

__doPostBack仅在页面上有LinkButton,Calendar或WizardStep控件时才有效

来自分类Dev

Mypy:具有某些方法的通用容器仅在应用附加协议时才有效

来自分类Dev

CSS文本过渡仅在HTML输入具有“ required”标签时才有效

来自分类Dev

push.default 仅在没有定义 ref 规范时才有效?

来自分类Dev

如何验证该字段大于仅在检查特定按钮时才有效

来自分类Dev

SVG过滤器仅在样式属性中添加时才有效(Firefox)

来自分类Dev

glDrawArrays仅在我向其传递“错误”数据时才有效

来自分类Dev

仅在Perl中存在哈希条目时才有效地获取它

来自分类Dev

wpf datagrid mousebinding leftdoubleclick 命令仅在项目已被选中时才有效

来自分类Dev

TWebBrowser - 它仅在显示其 Delphi 父窗体时才有效吗?

来自分类Dev

代码仅在未包装在函数中时才有效

来自分类Dev

仅在插入断点时才有效的 iOS Drawer UI

来自分类Dev

为什么我的 tkinter 窗口仅在全局创建时才有效?

来自分类Dev

Nginx 仅在将工作进程用户设置为 root 时才有效

来自分类Dev

我的底部导航栏仅在我双击以切换片段时才有效

来自分类Dev

我的程序只在我声明一个额外的数组时才有效

来自分类Dev

JavaScript在使用Node调用时有效,但仅在从HTML调用时才有效

来自分类Dev

仅在不使用数组的情况下,使用IFS循环读取文件才有效

来自分类Dev

无密码登录仅在服务器上使用直接调用的sshd才有效

Related 相关文章

  1. 1

    无法使用globalize 4.0.2 ruby gem使f.globalize_fields_for出现

  2. 2

    Powershell 脚本仅在存在断点时才有效

  3. 3

    页面上的自动滚动仅在 ctrl+单击使用 jquery 的按钮时才有效

  4. 4

    数据绑定仅在 select ng-options 中使用 as 语法时才有效

  5. 5

    在Globalize gem下加载翻译数据

  6. 6

    使用字典进行for循环,但仅在键为单个字符时才有效

  7. 7

    将 Kendo Grid 页面大小设置为变量仅在使用 parseInt(Variable) 时才有效?

  8. 8

    使用基本身份验证的存储库身份验证仅在嵌入 URL 时才有效

  9. 9

    媒体查询断点仅在启用触摸模拟时才有效

  10. 10

    Rails ::使用FriendlyId,Globalize和slug_candidates生成块

  11. 11

    __doPostBack仅在页面上有LinkButton,Calendar或WizardStep控件时才有效

  12. 12

    Mypy:具有某些方法的通用容器仅在应用附加协议时才有效

  13. 13

    CSS文本过渡仅在HTML输入具有“ required”标签时才有效

  14. 14

    push.default 仅在没有定义 ref 规范时才有效?

  15. 15

    如何验证该字段大于仅在检查特定按钮时才有效

  16. 16

    SVG过滤器仅在样式属性中添加时才有效(Firefox)

  17. 17

    glDrawArrays仅在我向其传递“错误”数据时才有效

  18. 18

    仅在Perl中存在哈希条目时才有效地获取它

  19. 19

    wpf datagrid mousebinding leftdoubleclick 命令仅在项目已被选中时才有效

  20. 20

    TWebBrowser - 它仅在显示其 Delphi 父窗体时才有效吗?

  21. 21

    代码仅在未包装在函数中时才有效

  22. 22

    仅在插入断点时才有效的 iOS Drawer UI

  23. 23

    为什么我的 tkinter 窗口仅在全局创建时才有效?

  24. 24

    Nginx 仅在将工作进程用户设置为 root 时才有效

  25. 25

    我的底部导航栏仅在我双击以切换片段时才有效

  26. 26

    我的程序只在我声明一个额外的数组时才有效

  27. 27

    JavaScript在使用Node调用时有效,但仅在从HTML调用时才有效

  28. 28

    仅在不使用数组的情况下,使用IFS循环读取文件才有效

  29. 29

    无密码登录仅在服务器上使用直接调用的sshd才有效

热门标签

归档