0

Я делаю приложение, которое использует globalize для перевода db. Мне нужно создать пользовательский интерфейс для администраторов, который должен быть , только имея доступ к определенным локалям, чтобы они могли переводить их.Как указать локаль I18n для зарегистрированных пользователей

Я думаю, что это два способа сделать это. 1- используйте Pundit (см. Ниже), или 2- после входа администратора, я указываю их локаль (не знаю, как это сделать). Я открыт для других предложений.

Предложение 1

Я начал использовать Pundit, потому что я думал, что я мог бы использовать для определения областей локаль для целей ограничения. Мне нужно иметь три уровня ролей. Суперпользователь может охватить все языки. Пользователь «europe» имеет доступ ко всем языкам из европейских стран. И пользователь конкретной страны может переводить только свою страну.

class IndustryArticlePolicy 
    attr_reader :user, :model 

    def initialize(user, model) 
    @user = user 
    @industry_article = model 
    end 

    class Scope < Struct.new(:user, :scope) 
    attr_reader :user, :scope 

    def initialize(user, scope) 
     @user = user 
     @scope = scope 
    end 

    def scope 
     if user.super_user? 
     scope.all 
     elsif user.europe? 
     #see method below - don't think it works 
     scope.where(I18n.locale.europe)   
     elsif user.role.present? 
      #dont think below works either 
     scope.where(role: @user.role.to_sym == I18n.locale) 
     else 
     scope.none 
     end 
    end 
    end 

    def index 
    @user.super_user? || @user.role.exists? 
    end 

    def europe 
    I18n.locale = :ru 
    end 

end 

Предложение 2

(пытаясь выяснить, как указать I18N для зарегистрированного пользователя)

Спасибо заранее!

ответ

0

Я нашел хак, который, я думаю, могу использовать. Я создал навигационные ссылки, которые появляются только в том случае, если пользователь зарегистрирован, чтобы назначить их конкретному I18n.locale, и я использую Pundit, чтобы ограничивать доступ только зарегистрированных пользователей. Если они умны, они могут изменить URL-адрес в другую страну, и они могут получить доступ таким образом. Итак, не идеальный и небезопасный, но старт.

 Смежные вопросы

  • Нет связанных вопросов^_^