草庐IT

happen-before

全部标签

ruby - 我如何在纯 Ruby 中实现 Rails 的 before_initialize/before_new 之类的东西?

在Rails中我们可以定义一个类:classTest并且当调用Test.new时,method()将在实例上被调用。我正在尝试了解更多关于Ruby和类方法的信息,但我在尝试用普通Ruby实现它时遇到了麻烦。这是我目前所拥有的:classLameARdefself.before_initialize(*args,&block)#somehowstorethesymbolsorblocktobecalledoninitenddefnew(*args)##Callmethods/blocksheresuper(*args)endendclassTester我正在尝试找出将block存储在se

ruby-on-rails - rails : How do I cancel a save if before_update callback returns false?

我有一个模型,它有一个before_update回调。根据我的理解,当在模型实例上调用update_attributes时,将调用before_update。我的假设是,如果before_update回调返回false,则不会更新记录。然而,这似乎并没有像假设的那样工作。每次我调用update_attributes时,即使before_update返回false,记录也会被保存。如果before_update返回false,您知道如何防止更新记录吗?这是我在user.rb文件中尝试过的内容:classUsertruebefore_updatedofalseendend这是我在Rails

ruby-on-rails - 在 Controller 之间共享一些 before_filters

我有两个父Controller,一个用于API,一个用于普通html页面。classApplicationController我想在两个Controller上共享一些before_filter。我试过这样的事情:classApplicationController还有这个:moduleMyFiltersdefself.included(klass)klass.before_filter:filter1klass.before_filter:filter2enddeffilter1enddeffilter2end...end但在这两种情况下我都会收到:undefinedmethod`be

ruby-on-rails - before_save 如果 attribute.present?

before_save:date_started_sets_deadline,ifdate_started.present?如果:date_started==nil,我不希望此before_save运行。我已经尝试了上述行的各种版本,所以不确定是否必须更改它或方法本身。defdate_started_sets_deadlineifself.date_started>Date.tomorrowself.deadline=self.date_startedendend我试图避免错误NoMethodError(undefinedmethod'>'fornil:NilClass):app/mo

ruby - 轨道模型 : validates_uniqueness_of doesn't remove trailing spaces not leading ones before unique check?

假设我对用户名实现validates_uniqueness_of。如果名称“maddy”已经存在,那么它将接受值“maddy”作为唯一值而不是“maddy”。它应该删除两侧的空格。如何有这种行为? 最佳答案 classPersonbefore_validation:strip_blanksprotecteddefstrip_blanksself.name=self.name.stripendend这段代码的来源包含一些关于为什么这不是默认的Rails行为的讨论。http://www.ruby-forum.com/topic/1664

ruby-on-rails - rake 数据库 :seed before db:migrate

每次播种时,rakedb:migrate都会出现错误。我不想迁移,因为它由于在我的数据库中查找尚不存在的表而失败。我怎样才能忽略它并继续使用种子?mmahalwy@~/Desktop/Code/API[56]→rakedb:seedYouhave4pendingmigrations:20141206123759AddEsAnalyzerColumnToLanguageTable20141213090426CreateTextFontView20141213090434UpdateLemmaAndStem20141230124205ChangeTextFontViewRun`rakedb

ruby-on-rails - rails : validation fails with before_create method on datetime attribute

ApiKey.create!抛出验证错误:expires_at不能为空。classApiKey有属性t.datetime:expires_at但是,如果删除了验证,则before_create方法会在创建时起作用。这是为什么?-此模式适用于其他属性,例如access_tokens(字符串)等 最佳答案 我会说因为before_create在验证之后运行,也许您想将before_create替换为before_validation注意:如果你像那样留下回调,它会在你运行valid?或save或任何时候设置到期日期触发验证的事件记录方法

ruby-on-rails - 我如何 before_filter Module::Class::method?

我的Rails项目中有一个自定义模块,我希望它成为一个before_filter,是否存在我能做些什么?before_filterTokenGenerator::Generator.generate_token("mytoken") 最佳答案 您可以使用blockasabefore_filter:before_filterdo|controller|TokenGenerator::Generator.generate_token("mytoken")end或者您可以创建一个单独的类:classTokenFilterdefself.f

ruby-on-rails - Rails Active Record 在 before_create 回调中取消(保存或创建)而不引发异常

实际上,我想测试一个模型回调。system_details.rb(模型)classSystemDetailprevent_if_same方法工作正常并按预期工作,但它在返回false时引发异常ActiveRecord::RecordNotSaved,并且该异常中断了rspec测试.我想要的是,它应该在不引发异常的情况下静默取消保存。system_detail_spec.rb(rspec)require'rails_helper'RSpec.describeSystemDetail,:type=>:modeldocontext'#agent'doit'Checksbrowserinsta

ruby-on-rails - 在其他人之后运行 Rails Controller before_action 回调

有没有一种简单的方法可以附加到Rails中Controller的before_action列表,这样以后添加的其他before_action回调将在我的回调之前而不是之后运行?我的用途是我担心其他Controller会包含,我希望包含它的Controller能够添加自己的before_action方法,然后在之后调用我的方法之一所有这些,但仍在实际行动之前。因为它是一个相当大的代码库,有很多开发人员,为了可用性,我不希望每个关注这个问题的用户都必须执行prepend_before_action或必须记住include我的模块在他们声明回调之后而不是在类的顶部。我很确定没有内置的方法可以