1

这是我的代码:

- unless Relationship.are_friends?(current_user, @user) && (current_user != @user)
  - puts "d"*100
  - puts "#{current_user.inspect}"
  - puts "#{@user.inspect}"
  = link_to "Add Friend", controller: "relationships", action: "req", name: @user.name,      remote: true, class: "friend_link"

基本上第二个条件“current_user!= @user”不起作用,我不知道为什么。当我放置当前用户和@user 时,它们工作正常。@user = User.find_by_name(params[:name])。

谢谢您的帮助!

4

2 回答 2

1

我认为这是您的要求。在以下情况下允许 A 将 B 添加为朋友:

  • A 和 B 还不是朋友并且
  • A和B不是同一个人

所以,在伪代码中,除非(already_friends 或 same_person)allow_add_friend end

如果这是您的要求,您的声明应为:

unless Relationship.are_friends?(current_user, @user) or (current_user == @user)

请注意,&&更改为or!=更改为==

于 2013-10-07T03:24:14.413 回答
1

unless通常有点违反直觉,尤其是在多个条件下。这样看:

true && false # => false, code is executed
false && true # => false, code is executed

跳过该块的唯一条件是:

true && true  # => true, code is not executed

我想你想要做的是跳过块是条件为真,在这种情况下你需要使用||运算符:

unless Relationship.are_friends?(current_user, @user) || (current_user == @user)
  #etc..
于 2013-10-07T03:25:04.633 回答