选项来自集合的选择和用户角色

时间:2016-04-23 16:41:01

标签: ruby-on-rails ruby select

我有一个小表单部分,您可以选择通过用户添加为协作者。

  <%= f.select :user_id, options_from_collection_for_select(User.premium, "id", "username") %>

但它给了我一个所有高级用户的列表,但我希望能够看到高级用户和管理员用户。

我试过(User.premium || User.admin)

但它似乎无法工作我仍然只有高级用户。

2 个答案:

答案 0 :(得分:3)

最佳做法是在控制器中提供视图的所有数据。这意味着您不应该在视图中进行数据库查询。而是在控制器中准备所有必需的变量。

控制器

class UsersController < ApplicationController
  def index
    @users = User.where(type: ['premium', 'admin'])
  end
end

视图

<%= f.select :user_id, options_from_collection_for_select(@users, "id", "username") %>

<!-- OR shorter -->
<%= f.collection_select :user_id, @users, :id, :username %>

答案 1 :(得分:-1)

尝试使用OR条件。假设用户类型存储在type

user列中
  <%= f.select :user_id, options_from_collection_for_select(User.where("type = 'premium' OR type = 'admin'"), "id", "username") %>