User
モデルでafter_update
コールバックを試してみてください。これにより、ユーザーのアバターが正常に更新されるたびにcreate_avatar_post
メソッドが呼び出されます。
# This is in your user.rb file
class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_many :posts, dependent: :destroy
has_many :likes, dependent: :destroy
has_many :liked_posts, through: :likes, source: :post
validates_uniqueness_of :username
has_attached_file :avatar, styles: { large: "800x800>", medium: "300x300>", thumb: "50x50>" }, default_url: "/assets/missing-user.png"
validates_attachment_content_type :avatar, content_type: /\Aimage\/.*\Z/
after_update :create_avatar_post, if: :avatar_changed?
def create_avatar_post
Post.create(
description: "#{username} update their profile picture",
user_id: id
# Whatever other attributes of Post
)
end
end
あなたはポストのようなソーシャルネットワーキングを作っていますか?他のユーザーに通知したいですか? –
はい。私はソーシャルネットワークを作っています。私は、ルビーが自分のプロフィール画像を更新するときに自動的にユーザーの投稿を作成したいと思っています。その投稿は投稿/インデックスページに表示されます – GVS
保存するアクティビティや保存するアバターのモデルの名前は何ですか?それらとユーザーの関係を教えてください –