我有一个名为"服装"的模特,我想成为单件(一件衣服).默认情况下,rails表示复数是衣服.对或错,我认为如果复数是"衣服",它将更具可读性.
如何覆盖复数命名约定?我可以在模型中做到这一点,所以我不必一遍又一遍地做吗?这将如何改变路由的处理方式(我使用的是宁静的架构)?
Rails内置了日志过滤功能,因此您无需记录密码和信用卡.效果很好但是当你想要触发自定义日志(比如发送电子邮件)并发送自己的参数或其他数据时,参数显然不会自动过滤.我一直在挖掘并尝试在rails源中找到它,但到目前为止还没有运气.
我已经配置了rails来过滤参数,如下所示,它可以正常工作以保持数据不受rails日志的影响:
config.filter_parameters += [:password, :password_confirmation, :credit_card]
Run Code Online (Sandbox Code Playgroud)
如何将params哈希值中的敏感数据转储到电子邮件,api调用或自定义(非rails)日志之前?
当用户提交表单并将某些字段留空时,它们将在数据库中保存为空白.我想遍历params [:user]集合(例如),如果字段为空,则在更新属性之前将其设置为nil.我无法弄清楚如何做到这一点,因为我知道迭代的唯一方法是创建新对象:
coll = params[:user].each do |c|
if c == ""
c = nil
end
end
Run Code Online (Sandbox Code Playgroud)
谢谢.
我一直在寻找一个简单的答案,这是一个非常漫长的时间,似乎这一点非常明显和简单,因为没有人有一个简单的,白痴证明教程.
无论如何,我想做的就是有一个单独的404.html静态页面,无论何时抛出任何错误都会加载.理想情况下,这应该仅在生产和分期中发生.
我觉得这应该是最简单的事情......但我无法弄明白.
任何帮助深表感谢.
我们的rails应用程序一旦加载就很好而且速度很快但启动速度非常慢.控制台,乘客等都需要大约10秒的时间才能完成.似乎比应有的方式更多.
我应该使用哪些工具或方法来磨练最慢的部件?通常的嫌疑人是什么?
我们的团队刚刚花了上周调试并试图找到许多mysql锁定超时和许多极长运行查询的来源.最后看来这个查询是罪魁祸首.
mysql> explain
SELECT categories.name AS cat_name,
COUNT(distinct items.id) AS category_count
FROM `items`
INNER JOIN `categories` ON `categories`.`id` = `items`.`category_id`
WHERE `items`.`state` IN ('listed', 'reserved')
AND (items.category_id IS NOT NULL)
GROUP BY categories.name
ORDER BY category_count DESC
LIMIT 10\G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: items
type: range
possible_keys: index_items_on_category_id,index_items_on_state
key: index_items_on_category_id
key_len: 5
ref: NULL
rows: 119371
Extra: Using where; Using temporary; Using filesort
*************************** 2. row ***************************
id: 1
select_type: SIMPLE
table: categories
type: eq_ref …Run Code Online (Sandbox Code Playgroud) 突然(没有对相关代码进行任何更改)我们通过活动记录获得锁定错误,例如:
ActiveRecord::StatementInvalid: Mysql2::Error: Lock wait timeout exceeded;
try restarting transaction: UPDATE `items` SET `state` = 'reserved', `updated_at` = '2012-09-15 17:58:21' WHERE `items`.`id` = 248220
Run Code Online (Sandbox Code Playgroud)
和
ActiveRecord::StatementInvalid: Mysql2::Error: Lock wait timeout exceeded;
try restarting transaction: DELETE FROM `sessions` WHERE `sessions`.`id` = 41997883
Run Code Online (Sandbox Code Playgroud)
我们没有在这两种模型中进行自己的交易,因此唯一的交易是内置轨道交易.流量或请求量没有激增.
这些错误似乎是当"新"查询试图在锁定的表上运行并且必须等待时,我们如何看待它正在等待什么?我们如何确定代码的哪一部分发出了长时间锁定表的查询?
关于我们在哪里可以看到或如何调查其原因的任何想法?
我需要在命令行上运行一个命令,要求用户响应.万一它有助于命令是:
gpg --recipient "Some Name" --encrypt ~/some_file.txt
Run Code Online (Sandbox Code Playgroud)
当你运行它时,它警告某事然后问:
无论如何使用这个键?(Y/N)
回答'y'让它正确完成.我一直在尝试使用open4 gem,但我无法正确指定'y'.这是我尝试过的:
Open4::popen4(cmd) do |pid, stdin, stdout, stderr|
stdin.puts "y"
stdin.close
puts "pid : #{ pid }"
puts "stdout : #{ stdout.read.strip }"
puts "stderr : #{ stderr.read.strip }"
end
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我正在做什么甚至可能?
Delayed :: Job将您的类,方法和参数序列化到处理程序字段中.我们目前正在将这种序列化方法硬编码到我们的代码中.这很糟糕.
我们应该如何构建处理程序,以便查找现有的排队作业?
我正在尝试构建我认为是基本应用程序的东西.好吧,两个应用程序一个用于Windows,一个用于OS X.我想捕获正在播放的音频信号(即,如果用户正在播放他/她的扬声器音乐).然后取出该信号并将其流出,以便另一台计算机可以"收听".另一台计算机是Windows或OS X.
谢谢!
克里斯
ruby ×5
mysql ×2
audio ×1
boot ×1
collections ×1
command-line ×1
console ×1
delayed-job ×1
filtering ×1
forms ×1
locking ×1
macos ×1
performance ×1
pgp ×1
pluralize ×1
routing ×1
windows ×1