パRails🚂
rails s
できない可能性が高いです。
@shodan
@hiromisugie
7-6-4 「バリデーションをテストする」から
8-1-2 「既存のフォームに画像アップロード機能を追加する」 383p まで。(途中です。)
PR: https://github.com/PerfectRubyonRails-Rindoku/Perfect_Ruby_on_Rails_Ch6/pull/24
8-1-2 「既存のフォームに画像アップロード機能を追加する」 384p から。🚂
@sharoa
has_one_attached :image
)これでEventモデルでimageと言う名前の属性が使えるようになる。event_params
メソッド中のpermit
メソッドに渡す引数に、追加した属性(今回だとimage``remove_image
)を許可すべきリストとして追加しないといけない。@shodan
remove_image
まわりがややこしそう。。@hiromisugie
bin/rails active_storage:install
bin/rails db:migrate
has_one_attached: image
(複数画像の場合はhas_many_attached: images
)@ayu-0505
@motohiro-mm
valid?
:バリデーションが実行された結果エラーが無い場合trueを返し,エラーが発生した場合falseを返すassert_empty
:与えられたオブジェクトが空である場合、検査にパスしたことになる@moegi29
@motohiro-mm
@hiromisugie
8-1-2 「既存のフォームに画像アップロード機能を追加する」 384p から
PR:
8-1-4 「容量が大きいファイルをアップロードした場合にバリデーションエラーにする」から。🚂
@sharoa
attr_accessor
で明示的に属性を宣言する。@moegi29
ActiveRecord::Type::Boolean.new.cast
で文字列をBooleanに変換できることを知りましたActiveStorage::Attachment
のみ削除、関連するActiveStorage::Blob
と画像サムネイルは手つかずの状態になるので、自由なタイミングで削除できる。表示上の画像と関連付けが削除されるということ、Ayuさんが例に挙げてくれたはてなブログの例がわかりやすかったです。@shodan
ActiveRecord::Type::Boolean.new.cast('true')
dependant: false
オプションをつけると、関連元のオブジェクトが削除されたときに、その「関連」だけを削除するようにできる(元のファイルそのものや、それに紐づくテーブル上のレコードは削除されない)。image_processing
gemを導入するactive_storage_validations
gemを導入する
:png
とか)を指定した時、ActiveStrageはファイル名ではなくファイルの中身が本当にpng
かどうかを判断してバリデーションを行う@motohiro-mm
ActiveRecord::Type::Boolean.new.cast('true')
はブール値のtrue
になる
has_one_attched :image, dependent: false
とすると、関連だけ削除されて表示されなくなる
ActiveStorage::Attachment
のみ削除される、テーブル上のデータは削除されない@sadanora
ActiveRecord::Type::Boolean.new.cast
has_one_attched :image, dependent: false
dependent: false
についての説明が見つけられずちょっともやっています。
@ayu-0505
remove_image
をattr_accessor
で属性宣言し、before_save
コールバックでtrueかどうか判断し、trueならばimage属性をnilにする処理で画像保存を削除している。ActiveRecord::Type::Boolean.new.cast('文字列')
で文字列を真偽値変換できる
Content Type
によるActive Storageの判断は絶対的に信頼して使うのはやめたほうがいいかも?@hiromisugie
dependent: false
はイベントが削除されたときに関連だけが削除されるが、ActiveStorage::Blobと画像やサムネイルは削除されないvalidates :image, content_type: [:png, :jpg, :jpeg]
のように書く。
@hiromisugie
@motohiro-mm
8-1-4 「容量が大きいファイルをアップロードした場合にバリデーションエラーにする」から
8-1-5 「縦幅や横幅が大きすぎる画像をアップロードした場合にバリデーションエラーにする」まで。
PR:https://github.com/PerfectRubyonRails-Rindoku/Perfect_Ruby_on_Rails_Ch6/pull/26
8-1-6 「ダイレクトアップロード時にバリデーションをしたい時の注意点」から。🚂
@sharoa
@moegi29
size: { less_than_or_equal_to: 10.megabytes }, dimension: { width: { max: 2000 } , height: { max: 2000 } }
というアップロード制限のコードを追記すると昨日の不具合が解決された@sadanora
@hiromisugie
size:
で設定dimension:
で設定@motohiro-mm
git stash
のやり方を全然わかっていないので調べようと思いました、sadanoraさんのメモも読みます、ありがとうございます〜@ayu-0505
less_than_or_equal_to
で大きい容量画像のバリデーションwidth
とheight
で縦横の幅のバリデーション@moegi29
@sugiwe
8-1-6 「ダイレクトアップロード時にバリデーションをしたい時の注意点」から
8-2-2 「Searchkickでイベント検索機能を作る」の途中まで。
PR:https://github.com/PerfectRubyonRails-Rindoku/Perfect_Ruby_on_Rails_Ch6/pull/27
8-2-2 「Searchkickでイベント検索機能を作る」のインストールするところから。395p。🚂
@sharoa
@motohiro-mm
@shodan
@sugiwe