我正在使用Rails和MySQL,并且有一个基于行计数的效率问题.
我有一个Project模型has_many :donations.
我想计算一个项目的独特捐赠者数量.
在projects表中有一个字段被调用num_donors,并在创建新的捐赠者时增加它是一个好主意吗?
或者@num_donors = Donor.count(:select => 'DISTINCT user_id')由于数据库优化,在效率方面类似或相似?这是否需要我为user_id我想要计算的任何其他字段创建索引?
总结捐赠总额的答案是否相同?
mysql database ruby-on-rails query-optimization denormalization
我想将 gem 配置为仅使用系统 gem - 而不是$HOME/.gem. 这是因为我正在编写一个将访问的脚本Gem.path,但我不希望它返回我的主目录中 gems 的路径。
我很确定我没有在我的等中明确设置GEM_HOME或类似的内容.bashrc。.bash_login
但Gem.path首先返回我的 homedir gems:
irb
> Gem.path
=> ["/home/nfm/.gem/ruby/1.9.1", "/usr/local/lib/ruby/gems/1.9.1"]
Run Code Online (Sandbox Code Playgroud)
我可以阻止这种情况发生吗?在哪里配置的?或者只是默认首先查看 homedir ?
如果我无法配置此功能,我可以使用 regexp hackery 返回 gem 的系统路径吗?
更多细节:
which ruby
/usr/local/bin/ruby
ruby --version
ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-linux]
gem env
- RUBYGEMS VERSION: 1.3.7
- RUBY VERSION: 1.9.2 (2010-08-18 patchlevel 0) [x86_64-linux]
- INSTALLATION DIRECTORY: /usr/local/lib/ruby/gems/1.9.1
- RUBY EXECUTABLE: /usr/local/bin/ruby
- EXECUTABLE DIRECTORY: /usr/local/bin
- RUBYGEMS PLATFORMS: …Run Code Online (Sandbox Code Playgroud) 我想将货币存储在我的(sqlite 和 mysql)数据库中。我正在尝试使用decimal列类型,与:scale => 2.
这没有按预期运行。如果我使用 保存一条记录:rate => 10.50,它将作为10.5. 另外,当我在表单字段中输出值时,它显示为10.5。
我不想每次想在 Rails 表单中很好地显示值时都进行黑客字符串格式化。
有办法解决这个问题吗?这是一个 sqlite 的事情吗?我只是误解了decimal列类型吗?
编辑:
为了澄清,我希望能够使用常用的表单生成方法:
- form_for @project do |f|
= f.text_field :rate
Run Code Online (Sandbox Code Playgroud)
如果我必须显式格式化输出,我将必须为每个十进制属性创建额外的方法:
def formatted_rate
"%.2f" % rate
end
= f.text_field :formatted_rate
Run Code Online (Sandbox Code Playgroud)
是否有任何其他常见技巧来强制输出格式,并且仍然使用默认的 Rails 表单生成器?
我们的产品包含免费组件和基于订阅的全功能Web应用程序.我为我们产品的每个部分创建了一个Chrome托管应用程序 - 基本上是一个可安装的书签.
应用程序清单的有趣部分如下:
"manifest_version": 2,
"app": {
"launch": {
"container": "tab",
"web_url": "https://paydirtapp.com/dashboard"
}
}
Run Code Online (Sandbox Code Playgroud)
"manifest_version": 2,
"app": {
"launch": {
"container": "tab",
"web_url": "https://paydirtapp.com/free_invoice_creator"
}
}
Run Code Online (Sandbox Code Playgroud)
我可以安装免费发票创建者应用程序和功能齐全的应用程序,但不能同时安装.
尝试这样做(在Chrome 26.0.1410.10(Official Build 183151)dev中)会导致以下错误消息:
"发生了错误.无法添加应用程序,因为它与"免费发票制作工具"冲突.
我可以在此问题中找到的唯一参考是https://developers.google.com/chrome/apps/docs/developers_guide#manifest,其中说明了以下内容:
重要提示:如果您提供多个应用,请避免重叠网址.如果用户尝试安装其"web_url"或"urls"值与已安装的应用程序的值重叠的应用程序,则第二次安装将因URL冲突错误而失败.例如,指定"urls"值" http://mail.example.com/ "的应用会与指定" http://mail.example.com/mail/ " 的应用发生冲突.
以前,我的web_url值只是设置为https://paydirtapp.com/,导致相同的错误.我希望更新它以便它不是其他应用程序的子字符串可以解决问题,但它没有.
有谁知道是否有可能有多个Chrome托管应用程序在web_url同一个域中?
google-chrome google-chrome-extension chrome-web-store google-chrome-app
我有一个普通的文本框和一个带文本输入的灯箱.
我希望将用户的选择保留在文本框中,即使用户专注于灯箱的文本输入也是如此.
在步骤3,丢弃用户的文本选择.如何防止这种情况?例如,请参阅Google文档链接插入灯箱.
谢谢 :)
更新
好的,所以Google文档使用iframe作为空白页面部分,这就是他们处理多个选择的方式.像这样的东西(原谅令人作呕的HTML):
// test.html
<html><body>
<h1 onclick='lightbox();'>This is the main section</h1>
<iframe src='frame.html'></iframe>
<div id='lightbox' style='display: none; position: fixed; top: 0; left: 0; height: 100%; width: 100%; opacity: 0.8; background-color: black;'>
<input type='text' name='url' />
</div>
<script type='text/javascript'>
function lightbox() {
document.getElementById('lightbox').style.display = 'block';
}
</script>
</body></html>
// frame.html
<p>This is my iframe</p>
Run Code Online (Sandbox Code Playgroud)
iframe中的文本选择与灯箱中输入的焦点无关.因此,如果选择了某些文本"This is my iframe",则会切换灯箱并将光标放在输入中,iframe的文本选择会在没有任何javascript的情况下持续存在.
我现在正在尝试Nickolay的建议.
这是一个用作事件处理程序的函数,它使用this:
function validate() {
if (this.val() == '') {
return false;
}
}
$(':input').change(validate);
Run Code Online (Sandbox Code Playgroud)
这是为了获取参数而重写的相同函数,因此我可以显式调用它:
function validate(field) {
if ($(field).val() == '') {
return false;
}
}
validate($('#customer_name'));
Run Code Online (Sandbox Code Playgroud)
我怎么可以重写我的validate功能,使之适合用作两个事件处理程序,并作为一个独立的功能给我打电话?
我想fields_for在关联中使用记录的子集.
我有一个Month模型,哪个has_many :payments.
但在我看来,我只希望得到fields_for一些付款.例如:
- fields_for @month.payments.large
Run Code Online (Sandbox Code Playgroud)
这不起作用.
我可以传递一组记录fields_for,而不是通常的符号(fields_for :payments)方法吗?
我正在WebView我的OSX应用程序中加载一个并希望在用户点击其中的元素时在我的应用程序中收到通知WebView.(WebView正在加载一个属于我的Web应用程序的网页.)
这可能吗?
我可以想出一种方法(调查在click事件中设置的javascript值),但我希望有一种更明智的方法!
我正在编写一个需要在多个平台上监视文件系统事件的程序.Java 7中包括一个新的标准库WatchService,其充当用于不同类型的文件系统的事件处理程序(的抽象inotify,FSEvents,FileSystemWatcher等等).
是否是使用Java 7编译器编译的代码需要Java 7 JVM来运行它的情况?
如果是这样,我是否会在没有为该平台安装/可用JVM 7的客户机上遇到各种问题(较旧的OSX,Windows XP等)?
我有一个对特定行很慢的查询。我认为Postgres 选择对某些行执行 aSeq Scan而不是使用 an Index Scan,因为它实际上比使用索引要快。
以下是针对正常工作负载使用索引的查询计划:http : //explain.depesz.com/s/1A2o:
EXPLAIN (ANALYZE, BUFFERS) SELECT "blocks".* FROM "blocks" INNER JOIN "jobs" ON "blocks"."job_id" = "jobs"."id" WHERE "jobs"."project_id" = 1;
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------------
Nested Loop (cost=0.71..166.27 rows=19 width=130) (actual time=0.092..4.247 rows=2421 loops=1)
Buffers: shared hit=350
-> Index Scan using index_jobs_on_project_id on jobs (cost=0.29..18.81 rows=4 width=4) (actual time=0.044..0.099 rows=15 loops=1)
Index Cond: (project_id = 1)
Buffers: shared hit=17
-> Index Scan using index_blocks_on_job_id on blocks (cost=0.42..36.67 rows=19 width=130) …Run Code Online (Sandbox Code Playgroud) javascript ×2
mysql ×2
cocoa ×1
database ×1
decimal ×1
field ×1
focus ×1
formbuilder ×1
forms ×1
java ×1
java-7 ×1
jquery ×1
jvm ×1
load-path ×1
nested-forms ×1
objective-c ×1
performance ×1
postgresql ×1
precision ×1
range ×1
ruby ×1
rubygems ×1
selection ×1
sqlite ×1
textbox ×1
this ×1
webview ×1