×
Покер бот на Ruby on Rails (12 сен 2018)

Третья ипостась покера на ruby. Искреннее спасибо всем, кто прислал замечания по предыдущим релизам.

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

Больше
6 мес. 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

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

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