这个ruby on rails方法有什么问题?

时间:2015-12-24 08:44:58

标签: ruby-on-rails ruby

我的syntax error is solved,但现在我又遇到了另一个问题。

我有一个模型用户和帖子。此外,我已经创建了名为Like的附加模型(用于喜欢/不喜欢的系统)。所以,我写了一个方法来检查模型Like的副本是否同时具有给定的'post_id'和'user_id',然后给定的用户喜欢给定的帖子。这是我方法的代码

def licked(p,u)#p - post, u - user
        if Like.all.empty? then return false
        else
            if (Like.where(post_id: p.id).empty?)
                return false
            else 
                posts=Like.where(post_id: p.id)
                if ((posts.length<2) && (posts[0].user_id==u.id) && (posts[0].action!=nil))==true then return true 
                else 
                    if ((posts.length<2) && (posts[0].user_id!=u.id)&& (posts[0].action!=nil))  then return false 
                    else posts.each do |i|


        if (i.user_id==u.id&& (posts[0].action!=nil)) then return true
                    end
                end
                end
            end
        end
    end
end

很抱歉,如果有很多if,我没有找到任何其他方式来重新安装它,无论如何它不起作用。所以我要求你的帮助:要么改变现有代码,要么以其他方式改进,谢谢。

1 个答案:

答案 0 :(得分:4)

你不需要任何逻辑。

def liked(post, user)
  Like.where(user_id: user.id, post_id: post.id).where.not(action: nil).exists?
end