我正在使用Rails 3,并且有一个页面可以输出数据库中的帖子列表.我希望能够从链接中删除帖子.
下面的第二个例子有效,但第一个没有.谁知道为什么第一个不起作用?我的观点包含:
# this link sends a "GET" request which asks for the #show function
<%= link_to 'Delete', post, :method => :delete %>
# this link sends the proper "DELETE" request which asks for the #destroy function
<%= button_to 'Delete', post, :method => :delete %>
Run Code Online (Sandbox Code Playgroud)
我的路线文件包含以下内容:
resources :posts
Run Code Online (Sandbox Code Playgroud) 我正在开发一个项目管理应用程序,在应用程序中,我有project_managers和客户端.我正在使用Devise和CanCan进行身份验证/授权.
在登录后的什么时候我应该将用户重定向到他们自己的特定控制器/布局/视图?有没有一种方法来检查current_user.role的routes.rb基础上,他们是否是一个项目经理或客户端,并设置了根(或重定向)?这是我在Devise某处可以做出的改变吗?
在此先感谢您的帮助! - 标记
在我工作的地方,我们使用Ruby on Rails来创建后端和前端应用程序.通常,这些应用程序与同一MySQL数据库交互.它适用于大多数数据,但我们有一种情况可以转移到NoSQL环境.
我们有客户,我们的客户拥有我们所谓的"库存" - 其中一个或多个.库存可以包含数千个商品.这是目前通过两个关系数据库表进行,inventories和inventory_items.
当两个不同的库存具有不同的参数时,问题就开始了:
# Inventory item from inventory 1, televisions
{
inventory_id: 1
sku: 12345
name: Samsung LCD 40 inches
model: 582903-4
brand: Samsung
screen_size: 40
type: LCD
price: 999.95
}
# Inventory item from inventory 2, accomodation
{
inventory_id: 2
sku: 48cab23fa
name: New York Hilton
accomodation_type: hotel
star_rating: 5
price_per_night: 395
}
Run Code Online (Sandbox Code Playgroud)
因为我们显然不能使用brand或star_rating作为列名inventory_items,我们的解决方案至今一直使用通用列名,例如text_a,text_b,float_a,int_a,等,并引入第三个表,inventory_schemas.表现在看起来像这样:
# …Run Code Online (Sandbox Code Playgroud) 我注意到一些奇怪/怪异的东西:
开发/生产中完全相同的查询不使用相同的查询路径.特别是,开发版本使用的是在生产中省略的索引(支持seqscan).
唯一真正的区别是数据集的生产量要大得多 - 索引大小为1034 MB,而生产中为29 MB.如果他们(或表)太大,PostgreSQL会不会使用索引吗?
编辑:EXPLAIN ANALYZE对于两个查询:
发展:
Limit (cost=41638.15..41638.20 rows=20 width=154) (actual time=159.576..159.581 rows=20 loops=1)
-> Sort (cost=41638.15..41675.10 rows=14779 width=154) (actual time=159.575..159.577 rows=20 loops=1)
Sort Key: (sum(scenario_ad_group_performances.clicks))
Sort Method: top-N heapsort Memory: 35kB
-> GroupAggregate (cost=0.00..41244.89 rows=14779 width=154) (actual time=0.040..151.535 rows=14197 loops=1)
-> Nested Loop Left Join (cost=0.00..31843.75 rows=93800 width=154) (actual time=0.022..82.509 rows=50059 loops=1)
-> Merge Left Join (cost=0.00..4203.46 rows=14779 width=118) (actual time=0.017..27.103 rows=14197 loops=1)
Merge Cond: (scenario_ad_groups.id = scenario_ad_group_vendor_instances.ad_group_id)
-> Index Scan using scenario_ad_groups_pkey …Run Code Online (Sandbox Code Playgroud) 这更像是语义问题而不是其他问题.
我想检查一个变量是否是两个值之一.最简单的方法是:
if var == "foo" || var == "bar"
# or
if var == 3 || var == 5
Run Code Online (Sandbox Code Playgroud)
但这对我来说并不是很干涩.我知道我可以使用String.match(),但这对非字符串变量不起作用,速度慢三倍.
有没有更好的方法来检查两个值的变量?
我们正在做一个新应用程序的原型设计,并注意到其中一个操作需要永远加载(80-120秒).由于很多处理不需要在页面加载时发生(我们可以通过Ajax稍后请求数据),我想到使用Process.fork允许页面立即返回,而处理仍然发生在"幕后".
我们正在将Apache与Passenger一起用于该应用程序.
有几件事:
我知道delayed_jobs,resque,BJ和其他后台工作宝石.我们使用dj,最终也会使用类似的东西.在我们进行原型设计时,这是一个权宜之计.
我不关心服务器性能.该应用程序在自己的服务器上运行,只有少数用户尝试使用它.
早期测试表明这种方法效果很好,但我想知道使用它是否是个好主意.它会变得可靠吗?如果用户导航到另一个页面或关闭标签/浏览器,分叉过程是否会继续?fork完成后,进程是否会自行终止?
我正在尝试执行类似于此的查询:
SELECT <columns> FROM table1
INNER JOIN table2 ON table1.id = table2.table1_id
INNER JOIN table3 ON table1.id = table3.table1_id
WHERE table3.column1 != 'foo' AND <other_conditions>
LIMIT 1;
Run Code Online (Sandbox Code Playgroud)
问题是 - 我希望查询返回结果,无论记录是否table3存在.也就是说 - 如果记录table3存在,我想检查该记录是否具有某个列值.如果记录table3 不存在,我希望查询假设条件为TRUE.
有什么指针吗?
ruby ×3
database ×2
sql ×2
cancan ×1
couchdb ×1
devise ×1
encryption ×1
indexing ×1
join ×1
mongodb ×1
mysql ×1
nosql ×1
open-source ×1
postgresql ×1
routes ×1