我正在使用AR includes方法在对象User和Building之间执行LEFT OUTER JOIN ,其中User可能有也可能没有Building关联:
users = User.includes(:building).references(:buildings)
Run Code Online (Sandbox Code Playgroud)
因为我正在使用references,所以任何关联的Building对象都会被急切加载.
我的期望是我能够遍历用户列表,并检查用户是否有与之关联的建筑物而不触发其他查询,但实际上每当我尝试访问用户的建筑属性时我都会看到没有一个,AR进行另一个SQL调用来尝试检索该构建(虽然在后续尝试中它将返回nil).
这些查询显然是多余的,因为在初始连接期间会加载关联,并且似乎打败了包含/引用的热切加载的整个目的,因为现在我正在查看N次查询的数量等于数量空关联.
users.each do | user |
# This will trigger a new query when building is not present:
# SELECT "buildings".* FROM "buildings" WHERE "buildings"."address" = $1 LIMIT 1 [["address", "123 my street"]]
if user.building
puts 'User has building'
else
puts 'User has no building'
end
end
Run Code Online (Sandbox Code Playgroud)
用户类:
class User < ActiveRecord::Base
belongs_to :building, foreign_key: 'residence_id'
end
Run Code Online (Sandbox Code Playgroud)
有没有办法检查用户的建立关联的存在而不触发额外的查询?
ON RAILS 4.2.0/POSTGRES
更新:
谢谢@BoraMa将这个 …
我有一个绑定到模型值的文本输入,但我无法弄清楚如何以编程方式更改输入值并将更改传播到模型.
我理解,因为我正在更新我需要显式调用的角度范围外部的值$scope.$apply(),但它不起作用.
HTML:
<input id="test_input" ng-model="test_value">
Run Code Online (Sandbox Code Playgroud)
控制器:
$scope.test_value = 'abc'; // starting value
Run Code Online (Sandbox Code Playgroud)
安慰:
$('#test_input').val('xyz');
$('#test_input').scope().$apply();
$('#test_input').scope().test_value;
-> 'abc';
Run Code Online (Sandbox Code Playgroud) 我正在构建一个基于 Web2Py 的 Web 应用程序,并在远程 EC2 开发服务器上进行大部分开发。我想对整个系统进行版本控制,包括所有 python 模块、网页和 Apache 配置文件。这些文件显然分散在我的 Linux 机器上,但我希望能够使用单个命令签出/提交。我是命令行上的 SVN 新手 - 有没有办法使用某种带有符号链接的虚拟目录来执行此操作?
欢迎任何想法。谢谢。
无法弄清楚如何将php文件导入我的joomla组件 - 所有这些都失败了:
有任何想法吗?谢谢
网页是否需要以".php"结尾才能运行php代码?有没有办法以".html"结尾的文件可以运行PHP代码?
在github.com上浏览我的repo目录时,我注意到它使用很酷的javascript效果在目录视图之间切换而不会导致回发,但是url改变了很好且RESTful:http://../tree/master/dir7- > http://../tree/master/dir7/dir4.
每当我必须使用javascript跟踪导航时,我总是不得不求助于地址栏中的哈希参数. http://...page#new-javascript-location
他们是如何做到的呢?
我知道元关键字的相关性很少甚至没有,但我的客户想要它们.而且,他们给了我一个关键短语列表.我是否应该插入用逗号分隔的关键短语,即使它们重复某些关键词,或者我应该只包括每个关键词一次,而不是完全使用短语?
<meta name="keywords" content="big red cars, small blue cars, medium yellow cars">
Run Code Online (Sandbox Code Playgroud)
要么
<meta name="keywords" content="cars, big, small, red, yellow, blue">
Run Code Online (Sandbox Code Playgroud) 请考虑以下代码:
hashString = window.location.hash.substring(1);
alert('Hash String = '+hashString);
Run Code Online (Sandbox Code Playgroud)
使用以下哈希运行时:
#车=镇%20%26%20Country
Chrome和Safari的结果将是:
车=镇%20%26%20Country
但在Firefox(Mac和PC)中将是:
汽车=城镇和乡村
因为我使用相同的代码来解析查询和哈希参数:
function parseParams(paramString) {
var params = {};
var e,
a = /\+/g, // Regex for replacing addition symbol with a space
r = /([^&;=]+)=?([^&;]*)/g,
d = function (s) { return decodeURIComponent(s.replace(a, " ")); },
q = paramString;
while (e = r.exec(q))
params[d(e[1])] = d(e[2]);
return params;
}
Run Code Online (Sandbox Code Playgroud)
Firefox的特质在这里打破了它:汽车座位结束了"城镇",没有国家.
有没有一种安全的方法来解析跨浏览器的哈希参数,或修复Firefox如何读取它们?
注意:此问题仅限于Firefox解析HASH参数.使用查询字符串运行相同的测试时:
queryString = window.location.search.substring(1);
alert('Query String = '+queryString);
Run Code Online (Sandbox Code Playgroud)
所有浏览器都会显示:
车=镇%20%26%20Country
我希望我的网站显示为www.mysite.com,而不是www.mysite.com/
Apache 是否默认在域名后添加尾部斜杠,还是浏览器附加它?如果我想使用 .htaccess 阻止这种情况,那么 url 重写规则是什么?
html ×4
javascript ×3
php ×2
.htaccess ×1
angularjs ×1
apache ×1
css ×1
domain-name ×1
firefox ×1
hash ×1
joomla ×1
keyword ×1
linux ×1
meta-tags ×1
navigation ×1
query-string ×1
require-once ×1
ruby ×1
scrollbar ×1
sql ×1
svn ×1
url ×1
url-parsing ×1
web2py ×1