thing
likes_controller に次のコードがあり、 aがある限り正常に動作しowner
ます。そうでなければ、それは壊れます。
def create
@thing = Thing.find(params[:like][:liked_id])
user = @thing.owner
current_user.like!(@thing)
current_user.follow!(user)
respond_with @thing
end
使ってみました
user = @thing.owner if @thing.owner.exists?
しかし、私は NoMethodError を受け取ります:
NoMethodError in LikesController#create
undefined method `exists?' for nil:NilClass
の存在を確認するにはどうすればよいowner
ですか?
また、ブロックに 2 行目 ( ) を挿入する必要があることに気付きました。そうcurrent_user.follow!(user)
しないと、ブロックが再び壊れてしまいます...
編集:これはうまくいきました(@Amadanの回答を使用):
def create
@thing = Thing.find(params[:like][:liked_id])
current_user.like!(@thing)
user = @thing.owner
if user
current_user.follow!(user)
end
respond_with @thing
end
追加情報: 誰かが実際にこれを使用したことがある場合は、これを機能させるためにもう 1 つの小さな変更が必要であることを指摘しておく必要があります。上記のコードは、すでにの であるときに をuser
しようとするとエラーになります。like
thing
following
thing
owner
だから代わりに
if user
使った
if user && !current_user.following?(user)
これが役に立てば幸いです。