1

В Rails 4: Использование находки() непосредственно на моей модели генерирует запрос, который смотрит на слизняк в таблице page_translations:Friendly_id-глобализовать «найти() через» ассоциацию не с помощью таблицы перевода

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

Когда я использую поиск по ассоциации, таблица перевода не используется. Вместо этого 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, глобализовать 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. Владелец Repo @parndt в настоящее время занят. Поэтому любые намеки на то, чтобы получить эту работу, будут очень благодарны.

ответ

0

Оказалось, что это ошибка в жемчужине Глобализации, которая была исправлена ​​в ближайшее время.