【发布时间】:2014-10-20 03:47:57
【问题描述】:
我正在做一个加好友功能,在加好友页面,我想显示除当前用户和用户好友之外的所有用户,然后是一个“加”按钮。但我只能显示没有当前用户或用户朋友的所有用户。 这是我在用户模型中的代码:
scope :all_except, ->(user) { where.not(id: user) && where.not(id: user.friends)}
这是用户控制器:
@users = User.all_except(current_user)
这是视图:
<% for user in @users %>
<div class="user">
<p>
<strong><%=h user.name %></strong>
<%= link_to "Add Friend", friendships_path(:friend_id => user), :method => :post %>
<div class="clear"></div>
</p>
</div>
<% end %>
通过这样做,用户的朋友不会显示在页面上,但当前用户的名字仍然存在.. 有人可以帮忙吗?谢谢!
如果我使用,我尝试更改代码
scope :all_except, ->(user) { where.not(id: user) && where.not(id: user.friends)}
where.not(id: user) 不起作用,如果我使用
scope :all_except, ->(user) {where.not(id: user.friends) && where.not(id: user)}
where.not(id: user.friends) 不起作用
【问题讨论】:
-
你得到什么错误?什么“不起作用”?
-
所以你看到 current_user 和其他人,但没有看到朋友?
-
这次出现错误,ActiveRecord::StatementInvalid in User#index SQLite3::SQLException: near "SELECT": syntax error: SELECT "users".* FROM "users" WHERE (id ! = 3 AND id != SELECT "users"."id" FROM "users" INNER JOIN "friendships" ON "users"."id" = "friendships"."friend_id" WHERE "friendships"."user_id" = ?)
-
第一个结果相同,第二个也出错...SQLite3::SQLException: near ",": syntax error: SELECT "users".* FROM "users" WHERE ( id != 1,3)
-
语法有点不对劲。我更新了我的答案。这就是你所需要的。试试看,让我知道。 :)
标签: ruby-on-rails ruby rails-activerecord