我是Rails初学者,我现在正在为我的模型添加一些基本关联。我的两个模型中有以下内容:
用户模型:
class User < ActiveRecord::Base
has_many :photos, dependent: :destroy
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
validates_uniqueness_of :username
end
照片模型:
class Photo < ActiveRecord::Base
belongs_to :user
has_attached_file :image,
styles: { medium: '300x300>', thumb: '100x100>' },
default_url: '/images/:style/missing.png'
validates_attachment_content_type :image, content_type: /\Aimage\/.*\Z/
end
添加上述内容后,我运行了相应的迁移:
rails g migration AddUserIdToPhotos user_id:integer
rake db:migrate
user_id已添加到Photos表中,但是当我添加新照片时,user_id字段设置为nil。 当我去psql进行双重检查时,它甚至没有显示nil,只是一个空字段。
这是照片控制器中的代码:
def create
photo = Photo.new(photo_params)
if photo.save
Pusher['the_force'].trigger('new_photo', {
url: photo.image.url(:medium),
description: photo.description,
id: photo.id
})
end
redirect_to '/'
end
private
def photo_params
params.require(:photo).permit(:image, :description, :user_id)
end
端
非常感谢任何帮助。
答案 0 :(得分:1)
如果您没有从表单传递用户并且想要保存已登录的用户,则必须在创建照片实例时传递它。
photo = Photo.new(photo_params, :user => current_user)