我在 likes_controller 中有以下代码,只要 athing
有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
?
我现在也注意到我必须将第二行 ( 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
附加信息:如果有人实际使用过它,我应该指出,还需要再做一点小改动才能让它工作。如果 auser
尝试like
athing
当它们已经following
是thing
's时,上面的代码会出错owner
。
所以而不是
if user
我用了
if user && !current_user.following?(user)
希望这会有所帮助。