在上传的照片中添加user_id

时间:2011-04-08 13:27:15

标签: ruby-on-rails

使用RoR 2.3.8。

我允许用户使用回形针上传照片,但照片中没有所有权。这意味着,我根本不知道是谁上传了这些照片。

在这里,我想在照片模型user_id中添加一个新列,每次用户上传图片时,他的ID都会自动包含在列中。

我该怎么做?谢谢!

4 个答案:

答案 0 :(得分:1)

class User < ActiveRecord::Base
  has_many :photos
end

class Photo < ActiveRecord::Base
  belongs_to :user
end

在您的迁移文件中,在照片模型

中设置一个名为“user_id”的整数值的列

然后你可以打电话

@user.photos

@photo.user

答案 1 :(得分:1)

两个三种方法。

将新照片添加到用户的照片集中:

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

或者像这样:

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

或者将登录(当前)用户分配给新照片:

photo = Photo.new(params[:photo])
photo.user = current_user

答案 2 :(得分:1)

我会说:

  1. 在照片表中添加user_id

  2. 在照片模型中添加belongs_to :user

  3. 在您的用户模型中添加has_many :photos

  4. 在照片格式f.hidden_field :user_id, current_user

  5. 中添加隐藏字段
  6. 注意将user_id设为attr_accessible

  7. 如果您担心用户破解html并为其他人添加照片,则应在控制器中合并params,而不是在表单中添加字段。

答案 3 :(得分:0)

如果您正在使用Devise gem - 只需将其添加到您的photo_controller:

def create
  @photo.user = current_user
  ...
end