Ruby on rails RoR MongoDB阵列字段用法
我是MongoDB新手,不确定如何使用数组字段类型 所以我在我的模型中创建了Ruby on rails RoR MongoDB阵列字段用法,ruby-on-rails,arrays,mongodb,Ruby On Rails,Arrays,Mongodb,我是MongoDB新手,不确定如何使用数组字段类型 所以我在我的模型中创建了 field :admins, type: Array 在这个字段中,我想存储作为模型“管理员”的所有用户ID。但当我试图设置此字段时,它不会将信息保存在数组中,它只是简单地创建了一个ID为的字符串。由于我的限制,只有管理员才能编辑我的筛选函数 def check_if_admin unless Agency.find(params[:id]).admins.include?(current_agent.id)
field :admins, type: Array
在这个字段中,我想存储作为模型“管理员”的所有用户ID。但当我试图设置此字段时,它不会将信息保存在数组中,它只是简单地创建了一个ID为的字符串。由于我的限制,只有管理员才能编辑我的筛选函数
def check_if_admin
unless Agency.find(params[:id]).admins.include?(current_agent.id)
flash[:notice] = "Only possible as Admin."
redirect_to root_path
end
end
获取
"can't convert Moped::BSON::ObjectId into String"
因此,我尝试将create def中的字段初始化为ID为的数组:
@agency.admins = [current_agent.id]
这对数组中的一个用户来说是个窍门,但是如何向该字段添加ID呢
当我进入编辑表单时:
<%= form_for(@agency) do |f| %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :admins %><br />
<%= f.text_field :admins %> <br />
</div>
<div class="field">
<%= f.label :agents %><br />
<%= f.text_field :agents %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
然后手动输入另一个用户ID,我又回到了我的错误。
有人知道怎么避开吗
非常感谢你的帮助 此消息意味着您在某个点上存储了一个字符串,其中应该有ObjectId。Ruby正在尝试将当前的_agent.id(ObjectId)与params[:id](字符串)进行比较 在将输入推送到数组之前,似乎没有将表单中的text_字段中的输入转换为ObjectID 从admins字段获取输入,并将ObjectId设置为:
BSON::ObjectId.new(string_representing_admin_id)
我猜admins字段是一个逗号分隔的admin id数组,并且您正在使用一些易于使用的id值,例如用户名而不是生成的ObjectId,因为这将非常麻烦
在这种情况下,您可能会拆分并剥离输入,然后使用map/select创建ObjectId数组
在rails中使用一个select字段来显示类似的用户名会容易得多,对吗
无论如何,如果您需要更多帮助,请展示一些样本文档。非常感谢!它确实帮助了我。不知道我可以这样叫身份证!