大家好,我是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非常陌生,无法找到解决方案!感谢
答案 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()
方法。这只会返回一个结果(第一个记录符合其标准。