【发布时间】:2017-10-16 06:09:56
【问题描述】:
我有一个 Rails 模型设置为:
class Master < ActiveRecord::Base
belongs_to :user
has_many :submasters
serialize :subdocs, Array
end
它有一个序列化的array 的submaster_docs 存储连接的subdocs 的id 和我的Subdocs 的模型是:
class Subdocs < ActiveRecord::Base
belongs_to :user
end
现在我有一个 rails 方法,当用户单击删除按钮时,它会删除 subdoc。
在删除 Subdocs 条目时,我想从 Master 中删除 Subdocs 的 id,这样即使在删除 Subdocs 后它也不会尝试在它们之间创建关联
我的Master 数据库条目如下所示:
<ActiveRecord::Relation [#<Master id: 3, user_id: 1, name: "Being Batman", description: "Every man who has lotted here over the centuries, ...", subdocs: ["5"]>]>
subdoc的数据库入口:
<ActiveRecord::Relation [#<Subdoc id: 5, user_id: 1, name: "subdoc1.pdf">]>
例如,如果用户删除了 subdoc 5,那么我想从所有 Master 的 subdocs 数组中删除该值
我删除子文档的方法如下:
def destroy
@masters = {}
@subdoc = Subdoc.find(params[:id])
@masters = current_user.user.masters
# Tried these methods to delete the value.
# @subdocs = @masters.select { |t| t.subdocs.to_a - [params[:id]] }
# @subdocs = @masters.each { |t| t[:subdocs] - params[:id] }
@subdoc.destroy
return render :status => 200, :json => { :success => true }
end
但这给我带来了错误:No Implicit conversion of String into Array
我该如何纠正这个问题?谢谢!
【问题讨论】:
标签: ruby-on-rails arrays ruby activerecord