使用Collection_select显示基于当前用户的名称列表

时间:2016-01-15 14:20:02

标签: html ruby-on-rails ruby rubymine

大家好,我是Ruby新手,想知道是否有一种方法可以使用集合选择,以便为用户提供与他们共享相同business_id的其他用户的列表。

目前我的collection_select允许选择数据库中的每个用户:

<%= f.collection_select :id, Customer.all, :id, :full_name, :prompt => 'Select' %>

我想知道我是否能做类似

的事情
<%= f.collection_select :id, User.find_by_business_id(current_user.business_id), ... %>

但这不起作用。

current_user是在applications_controller中定义的方法,用于查找登录的当前用户。

请帮忙,因为我对rails非常陌生,无法找到解决方案!感谢

1 个答案:

答案 0 :(得分:1)

您需要做的就是创建一个查询,以获取与当前用户共享business_id的用户列表。而不是:

<%= f.collection_select :id, User.all, :id, :full_name, :prompt => 'Select' %>

您希望将User.all替换为用户子集。假设该字段在users表和current_user中都被称为business_id,这可能是您想要的:

<%= f.collection_select :id, User.where(business_id: current_user.business_id), :id, :full_name, :prompt => 'Select' %>

User.where(business_id: current_user.business_id)行正在做的是给出一组用户,这些用户的business_id列包含一定的值(在这种情况下与current_user的值相同)。

如果您对.where()或Active Record Query Interface不是特别熟悉,我强烈建议您在闲暇时阅读this documentation

<强>附录:

为了回应您最近对该问题的更新,您不希望使用.find_by_business_id()方法。这只会返回一个结果(第一个记录符合其标准。