Ruby on Rails チュートリアル:実例を使って Rails を学ぼう の2周目です。
第11章ユーザーのマイクロポスト | Rails チュートリアル
第11章ユーザーのマイクロポスト
本格的にWebアプリっぽくなってきました。
carrierwave, mini_magick, fog や、今回も各種テストは参考になります。
paginateさせながらのテスト
@user.microposts.paginate(page: 1).each do |micropost| assert_match micropost.content, response.body end
validation にファイル容量制限を入れる
# model validate :picture_size private def picture_size if picture.size > 5.megabytes errors.add(:picture, "should be less than 5MB") end end
acceptパラメータでuploadのファイルを制限する
<%= f.file_field :picture, accept: 'image/jpeg,image/gif,image/png' %>
jsでファイル容量の制御をする
onじゃなくbindで書いているところは気になりますが、まぁ本筋ではないので。
<script type="text/javascript"> $('#micropost_picture').bind('change', function() { var size_in_megabytes = this.files[0].size/1024/1024; if (size_in_megabytes > 5) { alert('Maximum file size is 5MB. Please choose a smaller file.'); } }); </script>
テスト時にcarrierwaveのresizeを無効化する
if Rails.env.test? CarrierWave.configure do |config| config.enable_processing = false end end