2015-03-26 2 views
1

Я хотел бы показывать заметки только в том случае, если пользователь является администратором. Официальный генерироваться initilizer содержит следующие строки:rails-footnotes и current_user

# Whether or not to enable footnotes 
    f.enabled = Rails.env.development? 
    # You can also use a lambda/proc to conditionally toggle footnotes 
    # Example : 
    # f.enabled = -> { User.current.admin? } 
    # Beware of thread-safety though, Footnotes.enabled is NOT thread safe 
    # and should not be modified anywhere else. 

, но я не мог сделать лучше, чем это:

f.enabled = true 
f.before {|controller, filter| filter.notes = controller.current_user.try(:admin?) ? [:controller, :view, :layout, :partials, :stylesheets, :javascripts, :assigns, :session, :cookies, :params, :filters, :routes, :env, :queries, :log] : [] } 

Это работает, но это правильно/безопасно? То, что я на самом деле хочу, - это эмулировать рельсы-сноски, позволяющие опорожнять или не списывать заметки. Как я могу использовать официальную лямбда-нотацию? User.current.admin? не имеет для меня смысла, потому что модель не должна иметь доступ к сеансу

ответ

1

рельсы-сноски фиксированные/улучшенные после открытия issue. Теперь вы можете сделать это:

f.enabled = proc { |controller| controller.current_user.try(:admin?) }