Список подарков аутентификации Rails для каждого пользователя? - PullRequest
1 голос
/ 21 октября 2010

Я пытаюсь разобраться с основами аутентификации в Rails.Для начала я использовал генератор nifty_authentication Райана Бейтса.Это помогает мне изучить основные параметры для входа в систему и т. Д.

У меня есть простое приложение, в котором есть таблица с персоной и подарком.Идея в том, что каждый пользователь создает список людей, а затем назначает возможные подарки каждому из этих людей.

Итак, со структурной точки зрения:

person belongs to user
gift belongs to person

Итак, у меня есть моделинастроить следующим образом.

модель человека

class Person < ActiveRecord::Base
has_many :gifts
end

модель подарка

class Gift < ActiveRecord::Base
belongs_to :person
end

модель пользователя

currently doesn't contain any belongs_to has_many etc.

Как мне убедиться, что у каждого пользователя есть свой список людей.Таким образом, один пользователь не может видеть список других пользователей или людей.

Могу ли я просто добавить следующее в модель пользователя?

has_many :people

и следующее в модель человека?

belongs_to :user

Будет ли это работать, или я что-то упустил?

Спасибо,

Дэнни

ОБНОВЛЕНИЕ: Приложение до сих порна Героку и Гитхубе.

http://giftapp.heroku.com/

http://github.com/dannyweb/GiftApp

1 Ответ

1 голос
/ 21 октября 2010

Это сработает, или я скучаю? что-то?

Очень короткий ответ: да, это сработало бы; нет, ты что-то не упускаешь.


Я посмотрел твой код.

Вместо:

def index
  @people = Person.find(:all)
end

Вам нужно что-то вроде:

def index
  @people = current_user.people
end

Где current_user - это объект User, который относится к зарегистрированному пользователю.

В методе create вам нужно будет назначить вновь созданного человека для current_user:

def create
  @person = Person.new(params[:person])
  @person.user = current_user # This associates @person with current_user
  if @person.save
    flash[:notice] = "Successfully created person."
    redirect_to @person
  else
    render :action => 'new'
  end
end
...