0

我的计划是使用 Devise 注册用户,并让他有机会在注册时上传图片(回形针)。所以我有用户和用户图片,其中用户有很多:用户图片。

我像这样修改了用户模型:

after_create :create_users_picture

def create_users_picture
    user_id = User.last.user_id
    UsersPicture.create!(:user_id => user_id)
end

这只是一个测试,看看它是否有效并且它确实有效。但现在我需要从回形针上传中获取文件信息。我已经将 file_field 插入 users_view 并且数据已正确提交。然后我尝试了类似的东西:

def create_users_picture
    @users_picture = UsersPicture.new(@user)
    @users_picture.save
end

因为我认为@user 包含所有必要的数据......但后来我得到:

Parameters: {"user"=>{"user_firstname"=>"merrr", "password_confirmation"=>"[FILTERED]", "photo"=>#<ActionDispatch::Http::UploadedFile:0xe54abbb4 @content_type="image/jpeg", @tempfile=#<File:/tmp/RackMultipart20121023-7937-1tbp5v7-0>, @headers="Content-Disposition: form-data; name=\"user[photo]\"; filename=\"rh.jpeg\"\r\nContent-Type: image/jpeg\r\n", @original_filename="rh.jpeg">, "user_lastname"=>"merrr", "email"=>"merrr@asd.de", "password"=>"[FILTERED]", "user_login"=>"merrr"}, "commit"=>"Sign up", "authenticity_token"=>"GRzc3Wx5mJJwBL32qjpMi24sCZdoWdRZgucldmk7Bmo=", "utf8"=>"✓"}
Completed 500 Internal Server Error in 347ms

ActiveRecord::StatementInvalid (Mysql2::Error: Column 'user_id' cannot be null: INSERT INTO `users_pictures` (`photo_content_type`, `photo_file_name`, `photo_file_size`, `user_id`) VALUES (NULL, NULL, NULL, NULL)):
app/models/user.rb:36:in `create_user_profile'

所以我可以通过使用 User.last.user_id 来获取 user_id 但是如何从图片上传中获取文件信息?我需要访问 POST 数据吗?如果是这样,我该怎么做?此外,我需要检查用户是否最终尝试上传图片......因为他不必这样做。这可以通过简单地检查表单是否发送某种图片数据来完成?提前致谢 :)

4

1 回答 1

0

我不认为你真的明白你在做什么))

你想要的好方法是使用嵌套属性进行关联。但我不认为它会对你有帮助,所以首先你必须阅读这里的所有内容

于 2012-10-23T10:04:45.463 回答