Ruby on rails 不是rails实例变量的条件

Ruby on rails 不是rails实例变量的条件,ruby-on-rails,Ruby On Rails,我有一个约会成员的散列,并尝试在rails控制器中创建一个MySQL查询。 查询中应排除具有map命令ID(例如{1,3})的用户。 例如@appointment.members.map{| m | m.user_id}返回{1,3,5},我想找到除这些之外的所有其他用户 @users = User.where( "id NOT IN (?)", @appointment.members.map{|m| m.user_id} ) 我使用的是Rails 3.2.9,所以我的exclude语句可能

我有一个约会成员的散列,并尝试在rails控制器中创建一个MySQL查询。 查询中应排除具有map命令ID(例如{1,3})的用户。 例如@appointment.members.map{| m | m.user_id}返回{1,3,5},我想找到除这些之外的所有其他用户

@users = User.where( "id NOT IN (?)", @appointment.members.map{|m| m.user_id} )
我使用的是Rails 3.2.9,所以我的exclude语句可能是错误的,因为我没有从这个查询中得到任何结果。问题不可能是map数组-我已经测试过了。
提前感谢。

我想您只是对
map
方法有问题,请尝试以下方法:

@users = User.where( "id NOT IN (?)", @appointment.members.map(&:user_id) )

编辑:为将来的读者删除了错误的语法(如果有的话)

我用一个新的实例变量解决了这个问题:

@members = @appointment.members.all
然后

@add_users = User.where( "id NOT IN (?)", @members.map(&:user_id) )

感谢您的支持

生成的查询有什么错误?这是奇怪的部分-如果我在rails控制台中测试查询,我会得到有效的结果,但在控制器中@users实例变量为空…是
@appointment。成员
真的是一个散列,还是说它是一个
有许多
关系?它是一个有很多Relationship第一个只返回一个空数组[],第二个则返回所有用户,包括.map数组中的用户。第二个数组无效。第一个问题是,您可以直接执行
@add\u users=User.where(“id NOT IN(?),@appointment.members.all.map(&:User\u id))
,但您可能知道吗?