【发布时间】:2017-11-26 23:59:08
【问题描述】:
不确定是否有您知道的解决方法,但在使用 globalize gem 时
class Menu < ActiveRecord::Base
translates :name
# other stuff ...
end
如果我将活动记录查询作为标准编写,它会产生一个空集。
-- 一般
Model.where(attribute: "Value")
不起作用,在哪里
Model.where('attribute = ?', 'Value')
确实有效。
--- 来自我的菜单模型控制台的真实示例:
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 Ruby 2.3.0
【问题讨论】:
-
我不知道 globalize 在你背后做什么,但比较
Model.where(attribute: "Value").to_sql和Model.where('attribute = ?', 'Value').to_sql可能会有所启发。查看原始表数据(即没有任何 ActiveRecord 干扰)也可能很有启发性。 -
你真是个天才。呜呜。通过快速查看您对 to_sql 的建议,很明显,如果翻译表中缺少翻译,则模型(具有在查找期间需要翻译的属性)返回 nil - 因此集合为空。挫败了我自己的应用程序(显然按设计运行)。谢谢
-
可能值得将该评论转换为答案。当事情不能“正常工作”时,所有的魔法都会非常令人费解。
标签: ruby-on-rails ruby ruby-on-rails-4 activerecord globalize