Является ли сохранение текущего идентификатора пользователя в БД через контроллеры созданием действий плохим выбором в ruby ​​на рельсах? - PullRequest
2 голосов
/ 18 января 2012

Является ли строка 3 в моем действии создания плохой практикой? Поскольку у пользователя есть много photo_albums и альбом должен быть связан с нужным пользователем, я в основном извлекаю идентификатор из current_user и сохраняю его в столбце user_id моей таблицы базы данных photo_albums.

Я уверен, что это должно быть сделано из модели, например before_save или before_create У меня проблемы с тем, чтобы заставить его работать. Я создал метод с аргументом и попытался передать идентификатор current_user в этот метод через контроллер в метод, написанный в моей модели, после чего перед сохранением передал имя этого метода, но либо получаю неверное число аргументов, либо ошибка или неопределенный метод.

Может кто-нибудь объяснить, как я могу это сделать, большое спасибо.

  def create
    @photoalbum = PhotoAlbum.new(params[:photo_album])
    @photoalbum.user_id = current_user.id
    if @photoalbum.save
      flash[:notice] = "Successfully created gallery."
      redirect_to @photoalbum
    else
      render :action => 'new'
    end
  end

С уважением

1 Ответ

7 голосов
/ 18 января 2012

В этом нет ничего плохого, но я был бы склонен сделать это более конкретным.

Вы говорите, пользователь has_many :photo_album

Так что вместо этого мы можем сказать

  def create
    @photoalbum = current_user.photo_albums.build(params[:photo_album])
    if @photoalbum.save
      flash[:notice] = "Successfully created gallery."
      redirect_to @photoalbum
    else
      render :action => 'new'
    end
  end

Это достигает того же, но использование has_many проясняет наши намерения.

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