Tag: 交易

如何使用paypal-ruby-sdk创建Paypal定期订阅计划时,卖家支付交易费用

我正在使用paypal-ruby-sdk通过信用卡创建定期订阅。 当我创建订阅计划时,我将事务(setup_fee)费用设置为零。 因此,paypal沙箱返回webhooks,交易费根据交易费规则支付给PayPal。 但我不确定是谁向PayPal支付费用。 我想要卖家支付费用。 以下代码显示我写的订阅计划创建: plan = Plan.new({ :name => self.unique_key, :description => self.title, :type => ‘fixed’, :payment_definitions => [{ :name => self.unique_key, :type => ‘REGULAR’, :frequency_interval => ‘MONTH’, :frequency => ‘1’, :cycles => ‘999’, :amount => { :currency => ‘USD’, :value => (self.price / 100.0).ceil(2).to_s } }, :merchant_preferences => { :setup_fee => { […]

在事务块失败后,从params哈希构建对象数组,Rails

我有一个表单,用户可以同时更新多个资源。 事务块使表单成为primefaces:如果对任何正在更新的资源进行一次validation失败,则不会更新任何资源,并且活动记录将回滚所有更改。 当事务失败时,我想再次呈现表单,显示用户输入的相同输入以及每个错误输入字段旁边的错误,这些错误阻止事务通过。 事务块工作。 我遇到的麻烦是从params日志构建对象数组。 数组的每个索引都应包含一个哈希,该哈希保存特定资源的所有属性的键/值对。 UDPATE:以下是回答代码的回答 码: def update_multiple begin User.transaction do params[:users].each do |k, v| User.find(k).update!(v) end flash[:notice] = “Update Successful” redirect_to :users and return end rescue @users = [] params[:users].each do |k,v| @users.push(User.new({:id => k}.merge(v))) end flash[:error] = “Errors found” render :edit_multiple and return end end 并且为了更好地衡量,这是传递的参数在日志中的样子。 此事务失败,因为name属性必须至少为3个字符。 Parameters: {“utf8″=>”✓”, “authenticity_token”=>”xyz=”, “users”=>{“15″=> […]

Rails创建事务

在创建新用户(在我的用户模型中)时,我也想创建一个条带客户。 只有当他们一起成功时才能完成这两项行动(就像我不希望没有用户的客户,反之亦然)。 出于这个原因,我认为将它们包装在一个事务中是个好主意。 但是,我一定不能正确地做到这一点。 我不相信我正确覆盖了create方法。 如果有人有一个建议作为更好的方式来做到这一点或我做错了,将不胜感激。 谢谢! def create User.transaction do super create_stripe_customer(self) end end def destroy User.transaction do super delete_stripe_customer(self) end end

一次将多个记录插入模型

我正在寻找一些最佳实践,当涉及到将数据插入到模型中时,尤其是当要创建大量记录时,到目前为止,我正在检索一些XML并将其保存到模型中 doc = Nokogiri::XML.parse(open(url)) doc.xpath(‘//xmlns:feed/xmlns:entry[xmlns:title[node()]]’).each do |s| cid = s.xpath(“xmlns:id”).text email = s.xpath(“gd:email/@address”).text name = s.xpath(“xmlns:title”).text data = Contact.new( :cid => cid, :email => email, :name => name) data.save end 现在这是逐个插入记录,这在我看来花了太长时间。 我已经读过一个解决方案是使用事务,或者我可以进行单个质量插入? 我的问题是,我将从哪一方面受益最多,以及如何格式化我已经拥有的每一项? 看到我当前设置到新设置的示例将使我受益,因为我将能够更多地理解它并实际从中学习 任何帮助赞赏 谢谢

无法创建新的Spree应用程序:“未定义的方法`raise_in_transactional_callbacks =’”

我几个月前就遇到过这个问题, 将它发布在Spree的GitHub页面上 ,然后自己想出了解决方案并将其发布在同一个问题上。 两个月后,我仍然会收到来自Google员工同样问题的评论,因为我有同样的错误信息,所以我觉得值得在这个网站上发布我的解决方案,以防万一有人遇到同样的问题但是看不出来在GitHub上。 问题:尝试按照Spree文档中的确切说明创建一个全新的Spree应用程序,当您尝试运行spree install –auto-accept时,会出现以下错误spree install –auto-accept或rails g spree:install : undefined method `raise_in_transactional_callbacks=’ for ActiveRecord::Base:Class (NoMethodError) 以下方案…

如何强制Rails ActiveRecord提交事务刷新

是否可以强制ActiveRecord推送/刷新事务(或只是保存/创建)? 我有一个时钟工作者,可以在后台为几个任务工作者创建任务。 问题是,时钟工作者有时会创建一个任务并将其推送给任务工作者,然后才能将时钟工作者信息完全刷新到数据库,从而导致丑陋的竞争状况。 由于产品的体系结构以及如何生成任务,因此使用after_commit并不可行。 简而言之,我需要能够让一个worker创建一个任务并将该任务刷新到db。

Rails 3 ActiveRecord交易

我有一个模型方法,我想从各种控制器调用。 它看起来像这样: def Post < ActiveRecord::Base def read! self.read_at = Time.now self.save self.thread.status = Status.find_by_name("read") self.thread.save end end 在我的控制器中,如果我打电话给@post.read! ,这会回滚任何错误吗?

如何从ActiveRecord中的事务中排除模型?

我有一个特殊情况模型,它不能成为外部事务的一部分: Outer.Transaction do … Inner.create(:blah) … end 我如何阻止Inner成为交易的一部分,假设Inner不知道它将被拉入哪个特定交易? 例如,创建内部事务是不行的,因为它也将成为外部事务的一部分。 我想这样做是因为内部模型需要立即写入而不是等待外部事务提交。

ActiveRecord :: Base.transaction应该在哪里?

我有三种型号:List,Food和Quantity。 列表和食物通过数量通过has_many:through关联。 所以每个数量都有三个参数:food_id,list_id和amount(整数)。 我的目标是每次创建一个列表时创建一个新的数量(与该列表相关联)。 我希望使用事务执行此操作,以便必须成功创建所有对象,否则将不会。 我的主要问题是:我的代码应该在哪里写这个交易? 我认为它应该在List模型中,但我不确定; 如果它应该在List模型中,我不知道它在 List模型中的位置。 我认为它不应该在List控制器中,我在Mark Daggett的博客评论中找到了建议 ,它可能是一个独立的数据访问对象,但我不知道该怎么做。 其次:交易本身。 我很难判断我的错误是在交易中还是在其位置上。 如果它是相关的,我在另一个问题的答案之后得到了这个问题,但我认为这应该是一个新问题,因为我没有找到一个特别关于交易的类似问题。 我的列表模型,当前交易所在的位置: class List :quantities before_save { self.name = name.downcase } validates :days, presence: true, :numericality => { :greater_than => 0 } validates :name, length: { maximum: 140 }, uniqueness: { case_sensitive: false } end ActiveRecord::Base.transaction do @list = List.create @a […]

如何从Ruby中的MULTI块中读取Redis?

我在MULTI事务中封装了一组复杂的Redis命令,但事务中的逻辑依赖于Redis中已有的值。 但是交易中的所有读取似乎都返回nil 这是一个演示问题的示例: [Dev]> $redis.set(“foo”, “bar”) => “OK” [Dev]> $redis.multi{ $redis.set(“foo”, “baz”) if $redis.get(“foo”) == “bar” } => [“bar”] [Dev]> $redis.get(“foo”) => “bar” 显然我希望最后一个返回值是’baz’ – 我怎么能实现这个目标?