2014-01-06 5 views
-1

Хорошо, ребята, я довольно новичок в рельсах. Я успешно создал приложение rails, в котором хранятся данные для входа в систему. Я использовал приложение для управления пользователями и установил cancan, но не знал, как его использовать.Как показывать почту только зарегистрированным пользователям в Ruby on Rails?

В любом случае,

Прямо сейчас, не имеет значения, если вы вошли в систему или нет, сайт показывает вам все «пост» или «закусок», которые были введены любым пользователем. Мне нужен способ, чтобы ограничить это только шоу пост, которые были сделаны пользователем, который в данный момент зарегистрирован в

я нашел через исследование, что мне нужно сделать что-то здесь:.

class FtpLoginsController < ApplicationController 
    before_action :set_ftp_login, only: [:show, :edit, :update, :destroy] 
    # GET /ftp_logins 
    # GET /ftp_logins.json 
    def index 
    @ftp_logins = FtpLogin.all 
    end 

    # GET /ftp_logins/1 
    # GET /ftp_logins/1.json 
    def show 
    end 

    # GET /ftp_logins/new 
    def new 
    @ftp_login = FtpLogin.new 
    end 

    # GET /ftp_logins/1/edit 
    def edit 
    end 

    # POST /ftp_logins 
    # POST /ftp_logins.json 
    def create 
    @ftp_login = FtpLogin.new(ftp_login_params) 

    respond_to do |format| 
     if @ftp_login.save 
     format.html { redirect_to @ftp_login, notice: 'Ftp login was successfully created.' } 
     format.json { render action: 'show', status: :created, location: @ftp_login } 
     else 
     format.html { render action: 'new' } 
     format.json { render json: @ftp_login.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

    # PATCH/PUT /ftp_logins/1 
    # PATCH/PUT /ftp_logins/1.json 
    def update 
    respond_to do |format| 
     if @ftp_login.update(ftp_login_params) 
     format.html { redirect_to @ftp_login, notice: 'Ftp login was successfully updated.' } 
     format.json { head :no_content } 
     else 
     format.html { render action: 'edit' } 
     format.json { render json: @ftp_login.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

    # DELETE /ftp_logins/1 
    # DELETE /ftp_logins/1.json 
    def destroy 
    @ftp_login.destroy 
    respond_to do |format| 
     format.html { redirect_to ftp_logins_url } 
     format.json { head :no_content } 
    end 
    end 

    private 
    # Use callbacks to share common setup or constraints between actions. 
    def set_ftp_login 
     @ftp_login = FtpLogin.find(params[:id]) 
    end 

    # Never trust parameters from the scary internet, only allow the white list through. 
    def ftp_login_params 
     params.require(:ftp_login).permit(:client_name, :website_name, :ftp_login, :ftp_password, :notes) 
    end 
end 

Если кто-то может понравиться отправьте меня в правильном направлении здесь, что было бы фантастически!

Заранее спасибо.

ответ

0

для этого сначала нужно сделать убедиться, что пользователь вошел в систему, прежде чем он идет на ваши действия. поэтому для этого вам нужен фильтр перед этим. authenticate_user! это метод, данный при разработке. поэтому, если пользователь не вошел в систему, он будет перенаправлять знак на странице автоматически

before_filter :authenticate_user!, only: [:posts, :entries] 

для сбора сообщений конкретного пользователя

@posts = current_user.posts 

или если он приходит на шоу конкретный пост вам возможно

@post = current_user.posts.where(id: params[:id]) 
+0

Хорошо, это то, что у меня есть .. класс FtpLoginsController jhammond2012

+0

Вы можете вставить отношение, которое вы сделали между FtpLogin и моделью пользователя –

+0

Есть ли способ связаться с вами напрямую? – jhammond2012

0

Вы можете использовать before_filter :authenticate_user!, only: [:posts, :entries], чтобы ограничить только зарегистрированные пользователи, чтобы просматривать эти действия.

Чтобы запретить пользователям просматривать только сообщения, созданные ими, вы можете создать свой собственный фильтр, как

def check_user 
    redircet_to :back, notice: "Restricted area!" if current_user.posts.include?(@post) 
end 
+0

Что вы ожидаете от current_user.posts.include? (@ post). можете ли вы объяснить, что –

+0

Этот фильтр может использоваться в таких действиях, как обновление, редактирование, показ ... когда переменная '@ post' уже установлена ​​в фильтре типа' find_post'. –

+0

первая вещь, когда этот фильтр запуска вы получите ошибку 500, если пользователь не вошел в –

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