##seedのデータをいれた後にviewで@user.imageが無いと怒られた
seed.rb
#テストユーザーの作成
user1 = User.create(
name: "test"
email: "test@gmail.com"
password: "testtest"
passwoed_confirmation: "testtest"
)
よし
#docker使っているので
$ docker-compose run --rm web rails db:seed
#docker使っていなければ
$ rails db:seed
これで完璧! と思ったら、、、
@user.imageなんてないだよね~って怒られました。
いやいや、controllerでimageつけてますがな!
controllers/user_controller
def create
@user = User.new(user_params)
if !@user.image.attached?
image_path = Rails.root.join('app/assets/images/user_default.png')
ここ→@user.image.attach(io: File.open(image_path), filename: 'user_default.png')
end
@user.save
end
と思っていたけどそんなの関係ないんだよね。
てことで
seed.rb
image_path = Rails.root.join('app/assets/images/user_default.png')
user1.image.attach(io: File.open(image_path), filename: 'user_default.png')
追加してあげて(画像の投稿機能にactive storage 使ってます)
#emailに一意性つけてるのでdb削除からのmigrate
$ docker-compose run --rm web rails db:migrate:reset
$ docker-compose run --rm web rails db:seed
はいエラーはかないから僕の勝ち。
こんな事にならないように
imageバリデーションかけておいたほうが安全かもしれません。