Friendly_id-globalize'find()通过'关联不使用转换表

时间:2013-11-12 17:18:12

标签: ruby-on-rails associations translation friendly-id globalize3

在Rails 4中: 直接在我的模型上使用find()生成一个查询,该查询在page_translations表中查找slug:

Page.find('my-title')
SELECT FROM "pages" LEFT OUTER JOIN "page_translations" ...
-> #<Page id: 1 ...>

当我通过关联使用find时,不使用转换表。 friendly_id使用原始表格。

@site.pages.find('my-title')
SELECT "pages".* FROM "pages" WHERE "pages"."site_id" = $1 AND "pages"."slug" = 'my-title' LIMIT 1  [["site_id", 1]]
-> ActiveRecord::RecordNotFound

在Rails 3.2(friendly_id 4.0.10,globalize 3.0.0)中,它的工作原理如下:

@site.pages.find('my-title')
SELECT "pages".* FROM "pages" WHERE "pages"."shop_id" = 1 AND "pages"."slug" = 'my-title' LIMIT 1
SELECT DISTINCT "pages".id, pages.position AS alias_0 FROM "pages" LEFT OUTER JOIN "page_translations" ...
SELECT "pages"."id" AS t0_r0, "pages"."title" AS t0_r1 ... FROM "pages" LEFT OUTER JOIN "page_translations"
-> #<Page id: 1 ...>

另见https://github.com/norman/friendly_id-globalize/issues/1。 回购所有者@parndt目前正忙着。因此,非常感谢任何提供此宝石工作的提示。

1 个答案:

答案 0 :(得分:0)

原来是Globalize gem中的一个错误,很快就会修复。