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

Using Collection_select to display a list of names based on current user

大家好,我是 Ruby 的新手,想知道是否可以使用集合 select 来为用户提供共享相同内容的其他用户的列表 business_id 和他们一样。

目前我的 collection_select 允许 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 的新手,找不到解决方案!谢谢

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

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

您想用一部分用户替换 User.all。假设该字段在用户 table 和 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 查询接口,我强烈建议您在闲暇时仔细阅读 this documentation

附录:

针对您最近对问题的更新,您不想使用 .find_by_business_id() 方法。这只会 return 一个结果(第一个符合其条件的记录。