Добавить user_id в загруженную фотографию - PullRequest
1 голос
/ 08 апреля 2011

Использование RoR 2.3.8.

Я разрешаю пользователям загружать фотографии с помощью скрепки, но нет права собственности на фотографию.Это означает, что я вообще не знаю, кто загрузил фотографии.

Здесь я хотел бы иметь новый столбец в модели Фотографии user_id, и каждый раз, когда пользователь загружает изображение, его идентификатор будетавтоматически включается в столбец.

Как мне это сделать?Спасибо!

Ответы [ 4 ]

1 голос
/ 08 апреля 2011

Есть два три способа сделать это.

Либо добавьте новую фотографию в коллекцию фотографий пользователя:

current_user.photos << Photo.new(params[:photo])

Или вот так:

current_user.photos.build(params[:photo])

Или назначьте зарегистрированного (текущего) пользователя новой фотографии:

photo = Photo.new(params[:photo])
photo.user = current_user
1 голос
/ 08 апреля 2011

Я бы сказал:

  1. добавить user_id в таблицу фотографий

  2. добавить belongs_to :user в фотомодель

  3. добавьте has_many :photos в вашу модель пользователя

  4. добавить скрытое поле в форму фото f.hidden_field :user_id, current_user

  5. Остерегайтесь устанавливать user_id как attr_accessible

Если вы боитесь, что пользователь взломает HTML и добавит фотографии для других, вам следует объединить параметры в вашем контроллере, а не добавлять поле в форме.

1 голос
/ 08 апреля 2011
class User < ActiveRecord::Base
  has_many :photos
end

class Photo < ActiveRecord::Base
  belongs_to :user
end

В вашем файле миграции установите столбец с целочисленным значением с именем «user_id» в фотомодели

Затем вы можете позвонить

@user.photos

или

@photo.user
0 голосов
/ 22 декабря 2012

Если вы используете Devise Gem - просто добавьте это в свой photo_controller:

def create
  @photo.user = current_user
  ...
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...