我正在使用Braintree来管理我的Rails应用程序中的订阅。
我有一个订阅模型,用于存储braintree客户ID和订阅ID。
我想在我的订阅模型中过滤有效订阅。到目前为止我已经
了def find_active_subscriptions
@active_subscriptions = Braintree::Subscription.search do |search|
search.status.is "Active"
end
但现在我想使用@active_subscriptions中的订阅ID来查找本地订阅模型中具有相同订阅ID的所有对象,并将其放入变量中,例如@local_active_subscriptions。
我必须这样做的原因是使用本地信息访问Braintree :: Address并仅提取活动地址。
感谢您的帮助。
答案 0 :(得分:1)
您拥有@active_subscriptions
,您可以将所有ID收集到一个数组中,并将它们直接传递到本地订阅模型的find
方法中。我不知道你在这里使用什么属性,所以我只是做了一些猜测:
@active_subscription_ids = @active_subscriptions.collect(&:subscription_id)
@local_active_subscriptions = LocalSubscriptionModel.find(@active_subscription_ids)
答案 1 :(得分:1)
我不确定Braintree :: Subscription.search会返回什么,但是如果它类似于ActiveRecords,你可以使用类似的东西:
@local_active_subscriptions = Subscription.where("id IN(?)", @active_subscriptions.map{ |act_subs| act_subs.id })
.map函数应该将所有ID放入一个数组中,然后ActiveRecord查询将查找您的订阅表中ID在该数组中的所有订阅。 我不确定在Braintree :: Subscriptions上的映射;我从来没有用过它。
修改的
像ptcherry说的那样,你也可以用find做搜索。而且我认为收集也适用于将ID映射到数组中。您也可以使用@active_subscriptions.map(&:id)