我在Fedora 17下运行Rails 3.2.3,Ruby 1.9.当我运行时rails s,我收到此警告,我该如何解决?
安全警告:Rack :: Session :: Cookie没有提供任何秘密选项.这构成了安全威胁.强烈建议您提供密码以防止可能来自精心制作的Cookie的漏洞利用.在将来的Rack版本中不支持此功能,未来版本甚至会使您现有的用户cookie无效.
我在我的git repo中有一段代码而不是我当前的分支,我不确定哪个提交和哪个分支.我怎样才能搜索到目前为止为特定字符串提交的所有文件(之后显示该行代码的周围)?
对于产品表上的某些过滤子条件,我想找出那些过滤产品的不同类别(数百万种产品).
这样做的明确方法
SELECT DISTINCT category_id FROM "products" WHERE _conditions_
Run Code Online (Sandbox Code Playgroud)
当涉及很多行时,需要很长时间才能完成(GROUP BY相反,它并没有真正改变太多)
根据https://wiki.postgresql.org/wiki/Loose_indexscan,当不同的col上只有相对少量的不同值时(就像这里有~30个类别的情况一样),条件
SELECT DISTINCT category_id FROM "products"
Run Code Online (Sandbox Code Playgroud)
可以重新表述为递归CTE
WITH RECURSIVE t AS (
SELECT MIN(category_id) AS category_id FROM "products"
UNION ALL
SELECT (SELECT MIN(category_id) FROM "products" WHERE category_id > t.category_id)
FROM t WHERE t.category_id IS NOT NULL
)
SELECT category_id FROM t WHERE category_id IS NOT NULL
UNION ALL
SELECT NULL WHERE EXISTS(SELECT 1 FROM "products" WHERE category_id IS NULL);
Run Code Online (Sandbox Code Playgroud)
这实际上在我的用例(milisecons而不是秒)中表现得更好.但它没有条件.
如何WHERE _conditions_正确地将' '部分添加到递归CTE?
我有一个带有文章和作者模型的rails应用程序.如果我有作者和帖子并希望表明作者应该是文章的所有者,或者文章属于作者,那么最佳做法是什么?特别是:
如果我设置它会有所作为吗?
my_article.author_id = author_one.id
Run Code Online (Sandbox Code Playgroud)
或者如果我这样做
author_one << my_article
Run Code Online (Sandbox Code Playgroud)
使用的关联是
顺便说一下,如果出现类似的问题,最好的方法是什么呢?
有没有办法使数据库只允许一行(例如,对于站点范围的设置)?
在应用程序的管理面板中,应该引入新表单.我想使用2.3依赖RoR指南中描述的记录识别,但如果我说的话
form_for(@product)
Run Code Online (Sandbox Code Playgroud)
要么
form_for [:backend, @product]
Run Code Online (Sandbox Code Playgroud)
它扔了一个ArgumentError: Missing block.这是用于后端 - 新功能,控制器在其中controller/backend/product_controller定义
def new
@product = Product.new
end
Run Code Online (Sandbox Code Playgroud)
我做错了什么?为什么这不起作用?
为了包含我在某些页面上只需要的一段javascript,我放了
= javascript_tag do
= render "inserts_js_enhanced_element.js.erb"
Run Code Online (Sandbox Code Playgroud)
在我的haml档案中.现在我在测试中收到警告:
DEPRECATION WARNING: Passing a template handler in the template name is
deprecated. You can simply remove the handler name or pass render
:handlers => [:erb] instead.`
Run Code Online (Sandbox Code Playgroud)
但是,当我将线路更改为
= render "inserts_js_enhanced_element.js", :handlers => [:erb]
Run Code Online (Sandbox Code Playgroud)
无论如何,我得到一个新的警告,说
DEPRECATION WARNING: Passing the format in the template name is
deprecated. Please pass render with :formats => [:js] instead.
Run Code Online (Sandbox Code Playgroud)
如果我确实改变了
= render "inserts_js_enhanced_element", :handlers => [:erb], :formats => [:js]
Run Code Online (Sandbox Code Playgroud)
它给了我错误
ActionView::Template::Error:
Missing partial application/inserts_js_enhanced_element with {:handlers=>[:haml, …Run Code Online (Sandbox Code Playgroud) 在Ruby on Rails中,对于ActiveRecord class MySettings,是否有更优雅的选择
s = MySettings.last
s.do_updates = true
s.save
Run Code Online (Sandbox Code Playgroud)
一行?
我有一个控制器动作,以两种格式响应相同的根--html和json.但是为html响应运行的代码与json响应的代码完全不同.现在我有类似的东西
def index
result_html = ...
result_json = ...
respond_to |format|
format.html
format.json { result = result_json.limit(10) }
end
end
Run Code Online (Sandbox Code Playgroud)
而且我想拥有它
def index.html
result_html ...
end
Run Code Online (Sandbox Code Playgroud)
和
def index.json
result_json ...
end
Run Code Online (Sandbox Code Playgroud)
组织它的最佳方式是什么?