×
Masterpro Nivo Slider (06 фев 2023)

Это форк Vinaora Nivo Slider, пришлось переименовать, в силу требования JED. Даже старую версию качать можно было только с варезных сайтов, нашпигованную троянами. Зачем оно такое, согласитесь.

Вопрос Ruby on Rails: Only allow owner of data to access

Подробнее
5 года 3 мес. назад #1 от serge
Рано или поздно (но скорее рано) перед каждым rails-разработчиком возникает эта проблема: как ограничить доступ к определенным экшенам для тех или иных пользователей приложения. Как разрешить только автору редактировать свои собственные коменты в блоге, а только админу - их удалять, как разрешить доступ к пользовательским ресурсам, хранящимся в db, только их владельцу, например. Плюс любые, разумеется, варианты. Опять же как вариант: можно сходу поставить cancancan или pundit (или еще сотня названий гемов), отредактировать class Ability. Но - всегда ли в этом есть необходимость?

Далее привожу эффектный пример, способ ограничить доступ к ресурсам юзера, создаваемых посредством стандартной формочки scaffold:
rails generate devise User
rails generate scaffold Campaign name:string user:belongs_to

средствами rails, без установки дополнительных гемов. Мало ли пригодится кому. Итак, users can access their campaigns as this:
current_user.campaigns


CampaignsController
def show
  #this will search only within current user campaigns.
  @campaign = current_user.campaigns.find_by(id: params[:id]).
  if campaign 
    #this campaign exists and its from current_user
   ...
  end
end

def index
  #only this user campaigns
  @campaigns = current_user.campaigns
end 

def new
  @campaign = current_user.campaigns.build
end

def create
  #This campaign is created with user_id = current_user.id
  @campaign = current_user.campaigns.build(campaign_params)
  @campaign.save
end

private

  def campaign_params
    params.require(:campaign).permit(:name)
  end

А я смогу! - А поглядим! - А я упрямый!

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Работает на Kunena форум