I´m trying to make ransack work on a model that has an association with a translation table.
Translations are managed by globalize gem.
The problem is when I try to search with ransack in model table in :name column, it shows nothing because the :name information is stored in another table.
Any clues how can I make ransack search in the association translation table? I know there is the possibility of using ransackers, but I have no idea which code to put in them.
Globalize gives you a class method of with_translations like:
User.with_translations('en')
And so you can set up your own scope on your model that takes advantage of this like:
def self.with_translated_name(name_string)
with_translations(I18n.locale).where('user_translations.name' => name_string)
end
Then you can expose this scope in your ransackable_scopes array in the model in question, like:
private
def self.ransackable_scopes
%i(with_translated_name)
end
With that in place you should be able to do:
User.ransack({ with_translated_name: "John" })