0

私の計画は、Devise を使用してユーザーを登録し、登録中に写真 (クリップ) をアップロードする機会をユーザーに与えることです。したがって、ユーザーにはusers_many :users_picturesがあるユーザーとusers_picturesがあります。

次のようにユーザーモデルを変更しました。

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 に答える