使用.map检查保存(如果是@ model.save)

时间:2014-01-07 04:30:48

标签: ruby-on-rails ruby-on-rails-4

如何在使用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'。

我理解为什么会这样,但我该如何解决这个问题呢?我还想在重定向之前检查保存。

感谢。

1 个答案:

答案 0 :(得分:1)

map会返回一个数组,因此@subscription将是Subscription个对象的数组,因为您使用的是create

您可以执行以下操作:

@subscription.any?(&:blank?)查看数组中是否有nilfalse""元素......

或者(更糟糕的是,因为它将是每条记录的另一个数据库调用),您可以这样做:

@subscription.map(&:save).flatten.any?(&:blank)重新保存数组中的所有元素,并确保所有元素都返回{.1}}。

我认为前者是最好的方法......所以你的代码看起来像是:

true