如何在使用Ruby .map方法时检查模型是否已保存?我的代码如下:
@subscription = feed.map { |subscribe| Subscription.create(dashboard_id: dashboard, category_id: category, feed_id: subscribe) }
respond_to do |format|
if @subscription.save
format.html { redirect_to subscriptions_path, notice: 'Subscription was successfully created.' }
format.json { render action: 'show', status: :created, location: @subscription }
else
format.html { render action: 'new' }
format.json { render json: @subscription.errors, status: :unprocessable_entity }
end
第if @subscription.save
行会为#`抛出错误undefined method
save'。
我理解为什么会这样,但我该如何解决这个问题呢?我还想在重定向之前检查保存。
感谢。
答案 0 :(得分:1)
map
会返回一个数组,因此@subscription
将是Subscription
个对象的数组,因为您使用的是create
。
您可以执行以下操作:
@subscription.any?(&:blank?)
查看数组中是否有nil
,false
或""
元素......
或者(更糟糕的是,因为它将是每条记录的另一个数据库调用),您可以这样做:
@subscription.map(&:save).flatten.any?(&:blank)
重新保存数组中的所有元素,并确保所有元素都返回{.1}}。
我认为前者是最好的方法......所以你的代码看起来像是:
true