好吧,当GitHub停机时,代码设计问题:
我总是在rails应用程序(通常)中使用非标准RESTful操作进行分析瘫痪.
我有乔布斯,我希望能够取消(并重新激活)它们.它不像设置复选框那么简单; 还有一些其他事情需要发生.所以我不能只使用现有的JobsController#update行动.
我看到以下是我的选择:
1.只需添加cancel和reactivate现有的作业控制器.路线将是这样的:
POST /admin/jobs/cancel/:job_id
POST /admin/jobs/reactivate/:job_id
Run Code Online (Sandbox Code Playgroud)
(不是RESTful;假设这是一个坏主意)
2.创建一个JobCancellationsControllerwith create和destroyactions.重新激活作业是destroy一种JobCancellation资源.
我将使用嵌套路由,如下所示:
resources :jobs, except: :show do
resource :job_cancellation, only: [:create, :destroy]
end
Run Code Online (Sandbox Code Playgroud)
默认情况下会给我一些类似的东西
一个)
POST /admin/jobs/:job_id/job_cancellation
DELETE /admin/jobs/:job_id/job_cancellation
Run Code Online (Sandbox Code Playgroud)
我可以在不改变控制器的情况下整理路线,就像:
b)
POST /admin/jobs/:job_id/cancellation
DELETE /admin/jobs/:job_id/cancellation
Run Code Online (Sandbox Code Playgroud)
虽然这看起来不太直观 - "取消"会更好cancel.所以我可以在保持控制器相同的同时改变路线:
C)
POST /admin/jobs/:job_id/cancel
DELETE /admin/jobs/:job_id/cancel
Run Code Online (Sandbox Code Playgroud)
第一条路线现在有意义(虽然RESTful严格来说不是吗?),但第二条路线不是......"删除工作取消"?所以你要把它改成:
d)
POST /admin/jobs/:job_id/cancel
POST /admin/jobs/:job_id/reactivate
Run Code Online (Sandbox Code Playgroud)
现在路由是有意义的,但看起来可疑地接近上面的选项1),即使路由确实映射到RESTful动作JobCancellationsController而不是非RESTful动作JobsController.将POST /admin/jobs/:job_id/reactivate路线映射到 …
我正在使用MAMP在本地开发CakePHP 2.2站点.每隔一段时间,我就会得到一个或多个与此类似的警告,关于无法写入一个或多个缓存文件:
Warning: SplFileInfo::openFile(/Applications/MAMP/htdocs/mywebsite/www/app/tmp/cache/persistent/myapp_cake_core_cake_console_en-au): failed to open stream: Permission denied in /Applications/MAMP/htdocs/mywebsite/www/lib/Cake/Cache/Engine/FileEngine.php on line 313
Run Code Online (Sandbox Code Playgroud)
奇怪的是,/ tmp是777,tmp/cache是777,而tmp/cache/persistent是777(不要担心......服务器上不会是777!).tmp/cache/persistent中的文件本身是644 - 但我认为Cake正在创建和管理该文件,并且使用它所需的权限.
如果我只刷新页面,则错误消失(然后稍后重新出现).我没有做任何明确的缓存,所以这个东西就是Cake正在做它自动做的事情.
所以我的问题是:
a)Cake的自动缓存是如何工作的?它是否尝试在每次刷新页面时写入该文件,并且偶尔会失败一次?或者它只是尝试偶尔写入该文件,但每次尝试都失败?
b)如果它只是偶尔失败一次,我可以安全地忽略它吗?如果它每次尝试失败,我该如何解决?
在此先感谢您的帮助!
好的,我一定在这里遗漏了一些非常简单的东西。我只想从 user_id 匹配的表中返回所有记录(简单!)并且“已支付”字段为 NULL 或 0。我的“已支付”字段是 TinyInt (1)。
我的 CakePHP 模型代码是:
$workingRecord = $this->find('first',array(
'conditions'=>array(
'Subscription.user_id'=>$userId,
array('not' => array('Subscription.paid' => true)) // Not True, to catch both false or NULL values
)
));
Run Code Online (Sandbox Code Playgroud)
CakePHP 生成的 SQL 是这样的:
SELECT `Subscription`.`id`, `Subscription`.`paid` FROM `subscriptions` AS `Subscription` WHERE `Subscription`.`user_id` = 3 AND NOT (`Subscription`.`paid` = '1') LIMIT 1
Run Code Online (Sandbox Code Playgroud)
常识会说这应该有效。问题是 SQL 将返回 'paid' 列中包含 0 的行,但永远不会返回 NULL。
有没有办法在不使用“或”的情况下一次性返回零和空值?
提前致谢。
这很好用:
d3.selectAll('ul li')
.style('background', 'red');
Run Code Online (Sandbox Code Playgroud)
但是,这没有做任何事情:
d3.selectAll('ul li:before')
.style('background', 'red');
Run Code Online (Sandbox Code Playgroud)
返回的选择d3.selectAll('ul li:before')是空的,即使:before元素确实存在,并且具有一些现有的CSS样式.
是否有可能用d3定位伪元素?
而如果是,快速跟进的问题:如何将针对所有的:before伪元素直接(即不内)特定的选择?
例如:
var listItems = d3.selectAll('ul li');
var beforeElements = listItems.selectAll('&:before'); // SASS-style selector obviously won't work here
Run Code Online (Sandbox Code Playgroud) 这:Cakephp覆盖HtmlHelper :: link提出了一个非常相似的问题,但没有完整的答案.也许现在,有了Cake 2,就会有.
我想创建一个自定义帮助器,它是Cake的Paginator Helper的子类.我希望我的新助手覆盖Cake的Paginator助手的'numbers'方法,但我希望它继承所有其他方法.
是否有可能以这种方式扩展核心助手?显然,我不想:修改Cake Core; 把不必要的代码放在AppHelper超类中; 或者将整个核心分页助手复制到我的新助手中.
我在通过pip安装的OSX上运行ansible 1.9.4.
如果我做ansible-vault create x,然后做一些修改并保存,然后每当我做的文件显示为空白ansible-vault view x或ansible-vault edit x.
我有Sublime Text 3作为我的$ EDITOR.当我将其设置为vim时,它全部按预期工作,我可以编辑和保存使用ansible-vault加密的文件.知道这里会发生什么吗?
我有一个带有一些自定义帖子类型的wordpress网站.每个自定义帖子类型显示一个列表页面,基本上显示特色图像和标题,然后您可以点击一个包含更多图像的详细信息页面.
我只需要调整上传的"特征图像"的大小.如果上传的图像未用作要素图像,我不需要缩略图.此外,每个自定义帖子类型显示不同大小的特征图像.
所以,我想要做的是说:
a)仅为要素图像创建缩略图
b)为某些帖子类型创建特定大小,而不为其他类型创建.
这可能吗?目前,每个上传的图片都有5个缩略图大小,我的wp-content目录比它需要的WAAAY大!
提前致谢.
我有一个狂欢商务2.1.1应用程序(Rails 4.0.0),我想在产品详细信息页面上显示一些"相关产品".相关产品只是随机选择的产品,其品牌/性别与正在观看的产品相同.它正在工作......我已经制作了products_controller_decorator.rb,它扩展了狂欢products_controller.rb.
Spree products_controller.rb有一个before_filter,它设置@product:
before_filter :load_product, :only => :show
Run Code Online (Sandbox Code Playgroud)
我自己的装饰师有一个设置的方法 @related_products
before_filter :get_related_products, :only => :show
Run Code Online (Sandbox Code Playgroud)
问题是:
a)碰巧,load_product之前的过滤器在我get_related_products之前的过滤器之前被调用,所以顺便说一句,我可以访问@product它设置变量.但据我所知,并不能保证会发生这种情况.我想确定稍后调用我的过滤器...
和
b)Spree的show方法也设置了@taxon,我真的希望能够自己使用 get_related_products方法中使用它.
所以,我想要的是像CakePHP这样的钩子before_render,它在控制器方法运行后被调用,但是在渲染视图之前.我似乎无法找到等效的导轨.有这样的事吗?after_filter我不会这样做,因为在渲染视图后调用它.
如果没有,那么在Spree的产品控制器get_related_products的show方法运行之后,通过哪种方式可以获得它的实例变量是什么?
如果您更改文件然后在 pry 或 irb 中重新加载它,它似乎会选择您添加到该类的任何新功能,但不会忘记您从该类中删除的旧功能。
重现步骤:
say_hello.load 'my_class.rb'say_goodbyeload 'my_class.rb'您现在可以使用这两种方法。我明白为什么会发生这种情况 - 因为 ruby 允许您重新打开类进行修改,重新加载文件基本上只是重新打开您已经加载的类的现有版本,而不是擦除该类的内存并定义从头再来上课。
我的问题是,除了退出并重新启动 PRY 或 IRB 之外,您如何解决这个问题?你怎么说“完全忘记我以前的课并从头开始重新加载这个文件”?
谢谢!
所以我需要创建一个接受名称数组并输出一组字符串的方法.如何将输出存储到数组中?所以我没有一个名字数组,而是有一系列的问候?
def badge_maker(array)
array.each do |i|
counter = 0
while counter < 7
array[counter] << "Hello, my name is #{i}."
counter += i
end
return array
end
end
arrayOne = ["Edsger","Ada","Charles","Alan","Grace","Linus","Matz"]
badge_maker(arrayOne)Run Code Online (Sandbox Code Playgroud)
cakephp ×3
ruby ×2
ansible ×1
caching ×1
cakephp-2.0 ×1
cakephp-2.1 ×1
cakephp-2.2 ×1
d3.js ×1
irb ×1
mysql ×1
pry ×1
rest ×1
rspec ×1
spree ×1
sublimetext3 ×1
wordpress ×1