草庐IT

ruby-on-rails - after_commit 真的运行了吗?

我在Rails3.0.8上并尝试使用after_commit回调。它在这里定义:https://github.com/rails/rails/blob/v3.0.8/activerecord/lib/active_record/transactions.rb#L210这里提到它是回调之一:https://github.com/rails/rails/blob/v3.0.8/activerecord/lib/active_record/callbacks.rb#L22考虑一下:classCar知道为什么它不起作用吗?我假设我正在正确使用它。 最佳答案

ruby-on-rails - 当还使用 after_initialize 回调时,如何解决 ActiveRecord (Rails 3) 中的 n+1 查询问题?

型号:classProject查找项目的语句:@projects=Project.includes(:user_roles)所以你可以看到,我告诉它在查询中包含用户角色关联。但是,我仍然看到n+1查询问题:它为每个项目找到一次角色。如果我从回调中删除self.user_roles的使用并查看日志,我可以看到它在2个查询中找到项目及其用户角色-一个用于项目,一个用于项目对于使用project_idin(1,2,3,4,5...,n)的角色。有没有办法解决这个问题?让我稍微澄清一下:虽然我愿意根据需要解决我的具体情况,但我更喜欢侧重于如何解决一般问题的答案。我能够编写一个kludge来获取

ruby-on-rails - rails 中的更新路线对 after_action react 不佳?

classFrogsController大家好。我想知道是否有人可以向我解释为什么rails中的更新路线不能将我的重定向后操作(底部的自定义方法)带回家。当我在after_action中包含更新时得到的错误是“缺少模板Frog/更新”。这将导致我在更新方法中手动添加redirect_tofrogs_path。谢谢! 最佳答案 after_action回调在操作完成后触发。您不能使用它来呈现或重定向。通过调用方法在操作本身中执行此操作:defupdate...redirect_homeend

html - Rails 如何将参数从 Controller 传递到模型内部的 after_save

我有一个Rfqcontoller我正在创建新的或更新现有的Rfq,当我创建或更新对象被保存时,我想要的是因为我有很多引号参数我想用参数中的引号更新line_items表保存Rfq后在quote_price列中[:quotes]我知道这很令人困惑,但是谁是ror-ish应该知道我想问的一些提示。 最佳答案 如果您试图在您的模型中使用params散列,那么您就违反了MVC的原则。该模型应该独立于参数。如果您正在尝试执行以下操作:#controllerModel.foo#modeldeffooparams[:bar].reverse!en

ruby-on-rails - heroku 上的 Rails : after push, 得到 "PG::UniqueViolation: ERROR: duplicate key value violates unique constraint"

这已经被问过好几次了(here和here等等)。每次我将我的Rails应用程序推送到Heroku时(至少在过去的几个月里,我会说),我都必须使用熟悉的方法重置我的keyActiveRecord::Base.connection.tables.each{|t|ActiveRecord::Base.connection.reset_pk_sequence!(t)}咒语。否则,当我尝试创建新记录时,我会遇到这样的postgresql故障:PG::UniqueViolation:ERROR:duplicatekeyvalueviolatesuniqueconstraint"users_clie

ruby - Sinatra "after"过滤器

Sinatra有一个“前”过滤器,但有没有一种简单的方法来实现“后”过滤器? 最佳答案 似乎有一些patch为此。 关于ruby-Sinatra"after"过滤器,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1512613/

ruby-on-rails - bundle 安装失败 : Error loading Rubygems plugin after I deleted files

我是Ruby和Rails的新手,正在努力通过Hartlrailswebdevelopmenttutorial.在本教程的过程中,我安装了Homebrew软件。运行brewdoctor后,homebrew指示我删除一些文件,除非我故意将它们放在原处。我删除了它们,brewdoctor说我没事了。现在,在教程的后续部分,我正在尝试将应用程序部署到Heroku。但我发现bundleinstall从未更新我的gemfile.lock文件。事实上,bundleinstall根本没有为我工作。错误输出如下。它似乎与我删除的其中一个文件有关(我基于Librarynotloaded:/opt/loca

ruby-on-rails - 知道什么事件触发了 ActiveRecord 模型的 after_commit

我有以下片段:classProductafter_commit:do_something,on:%i(updatecreate)defdo_somethingif#update...else#create...endendend如何知道什么事件触发了此处的提交后?请不要告诉我在提交后有2个:after_commit:do_something_on_update,on::updateafter_commit:do_something_on_create,on::create 最佳答案 ActiveRecordusestransacti

ruby-on-rails - Rails : After putting devise routes in namespace, 模型名称以命名空间为前缀。如何删除它?

我在我的RailsRESTFulAPI服务中使用devise进行身份验证。Devise使我能够使用[POST]http://domain/users和form_data创建一个新用户:[user]password=123[user]email=foo@bar.zoo[user]password_confirmation=123然后我将devise_for放在这样的命名空间中namespace:apidonamespace:v1dodevise_for:users,controllers:{:registrations=>'api/v1/registrations',:sessions=

python re.sub 组 : number after\number

如何将foobar替换为foo123bar?这不起作用:>>>re.sub(r'(foo)',r'\1123','foobar')'J3bar'这行得通:>>>re.sub(r'(foo)',r'\1hi','foobar')'foohibar'我认为当有\number之类的内容时,这是一个常见问题。谁能给我一个关于如何处理这个问题的提示? 最佳答案 答案是:re.sub(r'(foo)',r'\g123','foobar')文档的相关摘录:Inadditiontocharacterescapesandbackreferencesa