Получить записи для текущего пользователя - PullRequest
1 голос
/ 05 декабря 2011

У меня есть 3 контроллера: сайты, пользователи и сеансы.У меня есть все настройки аутентификации, и я устанавливаю объект current_user в контроллере приложений, как только пользователь входит в систему. Теперь все, что я хочу сделать, - это разрешить пользователям только просматривать свои сайты (модель сайтов имеет: "own_to: user"«).

class SitesController < ApplicationController

def index
    #this was Site.all, but I changed it. Is there a better way to do this?
    @sites = Site.find_all_by_user_id(current_user.id)
    # respond to ... etc
end

# Now, for show, edit and update, I want to ensure the site belongs to the user. How can I add that?
def show
    @site = Site.find(params[:id])
    # respond to ... etc
end

Если требуется дополнительная информация (модель, весь контроллер и т. Д.), Просто дайте мне знать, и я это объявлю!

Спасибо!

Ответы [ 2 ]

2 голосов
/ 05 декабря 2011

Предполагая, что ваши Модели имеют ассоциации, определенные следующим образом:

class Site < ActiveRecord::Base
  belongs_to :user
end

class User < ActiveRecord::Base
  has_many :sites
end

, тогда вы сможете сделать простое:

  current_user.sites

, чтобы получить все сайты, связанные с этим пользователем.

1 голос
/ 05 декабря 2011

Я не могу понять вашу идею очень четко.Но похоже, что вы хотите что-то вроде ниже:

def show
    @site = Site.find(params[:id])

    # check if the site belong to current user
    redirect_to some_user_default_path if @sites.user != @current_user

    # respond to ... etc
end

Надеюсь, что это может помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...