草庐IT

before_destroy

全部标签

ruby-on-rails - mark_for_destruction 在 before_save

这个before_save-callback有什么问题?classOrder:destroy,:inverse_of=>:orderaccepts_nested_attributes_for:line_itemsattr_accessible:line_items_attributesbefore_save:mark_line_items_for_removaldefmark_line_items_for_removalline_items.eachdo|line_item|line_item.mark_for_destructionifline_item.quantity.to_f当

ruby-on-rails - 运行抽佣 Assets :precompile before tests that include :js tag and skip otherwise

tl;博士——是否可以仅在测试主体中包含:js测试时运行单个命令(例如rakeassets:precompile)跑?--我正在开发一个Rails5、Ruby2.3.1应用程序,它有一个大型rspec测试套件。我们最近在应用程序中安装了webpackergem,这导致我们必须运行:$bundleexecrakeassets:precompile在运行测试之前。如果没有运行上述命令,测试将针对最近预编译的Assets运行。这引起了一些麻烦,因为开发人员忘记了这一步,然后用头撞墙,直到有人记得在运行测试套件之前运行它。理想情况下,我想简单地添加到spec/spec_helper.rb:co

ruby-on-rails - before_validation 没有被调用?

我遇到了一个奇怪的问题,我找不到合理的解释。我正在调查一个错误并放置一些日志记录(通过Rollbar),这样我就可以看到我的模型之一的一些实例的演变。这是我得到的:classConnexionself.id,:connexion_details=>self.attributes)endend现在我在rollbar中获取大量数据(每次创建/更新连接时几乎有2行)。但奇怪的是:对于某些连接(=>正是我正在调查的那些有错误数据的连接),我根本没有得到任何数据!我不明白如何创建连接并将其持久保存到数据库,并且没有任何before_validation日志记录的踪迹。看起来回调没有被调用,但除非

ruby-on-rails - 跳过 after_commit on destroy in rails

我想在destroy一个对象时跳过after_commit回调,而不是使用on语法明确指定方法列表.IE。像这样的东西:after_commit:foo,except:[:destroy] 最佳答案 我在RubyTips上找到了一种方法:after_commit:foo,if::persisted?或者对于更复杂的条件:after_commit,:foo,if:Proc.new{|record|record.persisted?&&[...]} 关于ruby-on-rails-跳过aft

ruby-on-rails - 评估 :dependent => :destroy

在Rails2.2.2(ruby1.8.7-p72)中,我想在实际执行之前评估销毁对象的影响。IE。我希望能够生成将受:dependent=>:destroy影响的所有对象的列表(通过对象的关联)。我试图解决的真正问题是向用户提供将要删除的所有内容的列表,并让他们确认该操作。谁能推荐一个解决这个问题的好方法?我刚刚开始研究ActiveRecord::Associations,但还没有取得太大进展。更新:在我的特定情况下,我有各种级别的对象(A-->B-->C)。 最佳答案 这应该可以帮助您入门...显然您必须对其进行自定义,但这列出

ruby-on-rails - 目标方法的名称是否在 before_filter 中可用

有没有办法让目标方法的名称在前置过滤器中可用。比如我有如下代码before_filter:logindefshow#...enddeflogin#...#getthenameofmethodoriginalcalled#...endhttp:///show被调用,随后调用登录我能得到一个show吗?字符串或类似的东西,这样我就可以将指令传递给实际发生在不同Controller上的登录,以返回到原始目标方法 最佳答案 您可以简单地从参数中获取操作:params[:action] 关于rub

ruby - Chef 独奏 : Installing build-essential recipe before postgresql

我正在尝试使用chef-solo在我的服务器上安装postgresql。我通过自己进行引导并在脚本中手动包含build-esential包来完成这项工作。现在我想使用knife-solo来处理Bootstrap,但我在定义执行配方的顺序时遇到了问题。我想在postgresql之前安装build-essential包。这是我正在构建的服务器的json文件{"dbuser":"myuser","dbpass":"mypassword","postgresql":{"password":{"postgres":"mypassword"}},"passenger":{"version":"3.

ruby-on-rails - 子级的 after_destroy 回调保存了父级的依赖性,当父级被销毁时会导致问题

我有一种情况,我想在另一个对象被销毁后更新父对象的依赖项。这是类层次结构的示例:classParent:destroyhas_many:conditions,:dependent=>:destroy....endclassInfofalse)end....end问题是,当父级被销毁时,它会销毁条件,然后触发after_destroy回调并在它已经被销毁后保存信息对象。所以在父级被销毁后信息仍然存在。如果我不绕过验证,保存将默默地失败,这是我不希望的。并使用保存!引发异常。Condition上的回调必须是after_destroy,否则Info上的重新计算方法将无法正确表示关系状态来计算

ruby-on-rails - 在 before_save Hook 中更改 ActiveRecord 属性值

我需要修复ActiveRecord属性的编码,并决定在before_saveHook中进行。在这一点上,我注意到了一个意想不到的功能。当我想更改属性的值时,简单地使用attribute_name=XY并没有像我预期的那样工作。而不是我需要使用self[:attribute_name]=XY。到目前为止还没有识别出这种行为,我使用了AR.attribute_name=XY。这是什么原因?这种行为与钩子(Hook)或其他东西有关吗?感谢您的解释。 最佳答案 这实际上是Ruby的“特性”:defvalue=(x)pxenddefrunva

ruby - Rails 事件记录 : Calling Build Method Should Not Save To Database Before Calling Save Method

我有一个简单的用户模型classUser还有一个简单的user_profile模型classUserProfile问题是当我调用下面的构建方法时,没有调用保存方法,我最终在数据库中得到了一条新记录(如果它通过了验证)classUserProfilesController任何人都知道发生了什么事。这个方法的定义如下,但它仍然为我保存build_association(attributes={})Returnsanewobjectoftheassociatedtypethathasbeeninstantiatedwithattributesandlinkedtothisobjectthro