小编Arw*_*452的帖子

从Active Record Array中删除Object

在Rails中,我有以下Active Record Collection:

@products = Product.all
Run Code Online (Sandbox Code Playgroud)

我需要遍历此集合并从中删除一些对象而不从数据库中删除它们.因此,使用

@products.each do |product|
    if CONDITION
        product.delete
    end
end
Run Code Online (Sandbox Code Playgroud)

不起作用,因为这也将从数据库中删除产品.有没有办法从这个集合中删除特定的产品而不从数据库中删除它们?

ruby-on-rails

7
推荐指数
1
解决办法
5129
查看次数

从Stripe检索客户的订阅ID

在Rails中,我正在尝试实施一个控制器操作,允许客户更改他们订阅的计划.根据Stripe文档,可以按如下方式完成:

customer = Stripe::Customer.retrieve("CUSTOMER_ID")
subscription = customer.subscriptions.retrieve("SUBSCRIPTION_ID")
subscription.plan = "premium_monthly"
subscription.save
Run Code Online (Sandbox Code Playgroud)

我将每个客户的ID保存在我的数据库的用户表中,但我仍然坚持如何根据客户ID检索客户的订阅ID.这个项目中的每个客户只有一个订阅,我如何根据他们的客户ID来拉动这个?

ruby-on-rails stripe-payments

5
推荐指数
2
解决办法
4771
查看次数

Rails 从自定义表单调用自定义控制器操作

在 Rails 项目中,我对控制器 exchange.rb 有以下控制器操作:

def update_ordid

# Get the active exchange
@exchange = Exchange.find(params[:id])

# Decide which order ID field to update
active_order_field = params[:ordfld]    

# Save the order ID
order_id = params[:ordid]

if active_order_field == 1 then
  @exchange.order_id_1 = order_id
else
  @exchange.order_id_2 = order_id
end

@active_exchange.save
respond_with(@exchange)

end
Run Code Online (Sandbox Code Playgroud)

我已经设置了一个到这个控制器操作的路由:

resources :exchanges do
    collection do
      get 'update_ordid'
    end
end
Run Code Online (Sandbox Code Playgroud)

我想调用此操作,该操作接受来自交易所 show.html.erb 页面上的表单的订单 ID。我需要传递三个值:

  1. 当前交易所的 ID,例如本例中的整数 URL localhost:3000/exchanges/2(这是表单所在的页面)
  2. 从文本字段输入的订单 ID
  3. 操作应该更新两个可能的交换字段中的哪一个

接下来我需要创建一个自定义表单,它将这些值作为参数传递给操作。我还没有找到关于如何做到这一点的好教程,但我的第一个想法是设置以下内容:

<%= form_for(@exchange) do |f| %>

<div class="field">
  <%= …
Run Code Online (Sandbox Code Playgroud)

forms ruby-on-rails

1
推荐指数
1
解决办法
2215
查看次数

标签 统计

ruby-on-rails ×3

forms ×1

stripe-payments ×1