1)我知道autosave: true
根据http://railsapi.com/doc/rails-v2.3.8/classes/ActiveRecord/AutosaveAssociation.html保存关联
2)我知道它将保存像这样构造的关联
book = Book.new(name: 'foo')
book.authors.build(name: 'bar') #has_many
book.save
Run Code Online (Sandbox Code Playgroud)
或者喜欢
book = Book.new(name: 'foo')
book.build_author(name: 'bar') #has_one
book.save
Run Code Online (Sandbox Code Playgroud)
3)我认为在分配或添加关联时也会保存关联
book = Book.new(name: 'foo')
book.author = Author.new(name: 'bar')
book.save
Run Code Online (Sandbox Code Playgroud)
要么
book = Book.new(name: 'foo')
book.authors << Author.new(name: 'bar')
book.save
Run Code Online (Sandbox Code Playgroud)
但是,我有一个复杂的错误,涉及的东西不能自动保存,当我期望它.因此,我希望通过检查进行调试,book
以验证我认为将要保存的内容实际上将被保存.
TL; DR; 保存关联时检查什么内部状态?我假设一个模型有一个内部实例变量,就像associations_to_save
在创建它们时添加了关联.然后,当保存模型时,它会遍历这些关联并保存它们.
如何检测用户是否已选中该框,"阻止此页面创建其他对话框"?
如果用户阻止了确认框的出现,则该函数confirm('foobar')
始终返回false.
如果用户无法看到我的确认对话框confirm('Are you sure?')
,则用户永远不能执行该操作.
所以,我使用的代码就像if(confirm('are you sure?')){ //stuff... }
.因此,false
来自浏览器的自动响应将阻止用户进行操作stuff
.但是,如果有一种方法可以检测到用户已经选中了该框,那么我可以自动执行该操作.
我认为如果用户已禁用对话,则该函数应该抛出错误,或返回true.该功能用于确认用户请求的操作.
一个典型的Redis聊天示例将是这样的(请参阅https://github.com/emrahayanoglu/Socket.io-Redis-RealTime-Chat-Example/blob/master/chatServer.js仅用于一个这样的示例):
io.sockets.on('connection', function (client) { //websocket connection
redis1.subscribe("chat");
redis1.on("message", function(channel, message) {
console.log(message);
client.send(message);
});
client.on('message', function(msg) {
redis2.publish("chat",msg.message);
});
client.on('disconnect', function() {
redis1.quit();
});
});
Run Code Online (Sandbox Code Playgroud)
但是,这里的问题是当client
"断开"时,redis1.on('message',FUNC(){})
监听器仍然连接.控制台将继续打印出来message
.如果要检查事件列表的人redis1
,他们仍会发现匿名函数正在侦听.
问题是没有任何redis1.off(...)
功能.那么,如何取消绑定/取消订阅/删除/删除redis消息监听器?
注意:不能只执行redis1.end(),因为这会破坏其他websocket连接用户的redis连接.
我想要创建的是索引之一,其中一些列被索引,另一些列被包含。PostgreSQL 在其文档中描述了这种索引
创建索引的 SQL 查询看起来像CREATE INDEX tab_x_y ON tab(x) INCLUDE (y);
在此处查看 ActiveRecord PostgreSQL 适配器文档
我没有看到任何使用此INCLUDE
列功能的选项。
我必须将其作为原始 SQL 查询运行吗?还有别的办法吗?
笔记
有时(不是每次,但通常)当我在本地开发时,在成功下载了数百个JS文件后(看起来我们目前已经下载了1393个脚本),Chrome将从并行下载文件切换到串行下载.
服务器是节点,使用express和模块"serve-static".我正在使用Chrome 43.0.我正在使用节点0.12.2.我正在使用serve-static 1.9.3.这些文件都是使用常规脚本标记来请求的<script src="foobar.js"></script>
.我怀疑这是Chrome问题,因为服务器响应不会更改.但浏览器请求也不会改变,只有他们的时间/顺序.
有任何想法吗?
编辑:鉴于此问题似乎是Chrome问题,我已在此处向Chromium提交了错误报告:https://code.google.com/p/chromium/issues/detail? can = 2& q = serial%20script%20downloading &colspec = ID%20Pri%20M%20Week%20ReleaseBlock%的20Cr%20Status%20Owner%20Summary%20OS%20Modified&ID = 500948&感谢= 500948& TS = 1434467876
如何重现这个问题
如果任这些条件不符合,它的工作原理.
.
Load: function (in_url, in_cb, in_responseType) {
var xhr = new XMLHttpRequest();
xhr.open('GET', in_url, true);
xhr.onload = function () {
if (xhr.status === 200) {
in_cb(null, xhr.response);
} else {
in_cb(new Error('[Loader] Could not fetch from: '+in_url+', status: '+xhr.status));
}
};
xhr.onerror = function (error) {
in_cb(error);
};
xhr.send();
}
Run Code Online (Sandbox Code Playgroud)
我有一个用户模型.用户可以拥有3个角色中的1个:role1,role2,role3.这由用户模型中的"角色"列表示.每个角色都有独特的个人资料.role1_profile,role2_profile,role3_profile.每个*_profile都是一个模型.
如何在Rails中表示此可选关联?
我尝试过两种不同的方式:
class User < ActiveRecord::Base
#FIRST WAY
if current_user.role == 'role1' then has_one :role1_profile end
#SECOND WAY
has_one :role1_profile, :conditions => ['user.role = ?', 'role1']
end
Run Code Online (Sandbox Code Playgroud)
但这不起作用.这样做的正确方法是什么?
背景故事:我正在尝试调试一个中间件中的问题,我认为该问题来自其他中间件。但是,我不确定。所以无论如何,我希望能够检查实际调用的中间件,因为我不确定顺序。
是否可以检查当前正在使用的中间件集?
我试图找到 Express 可能存储中间件的任何内部状态,但我无法找到。
我有一个模型(我们称之为博客)。看起来像:
class Blog < ApplicationRecord
belongs_to :author
def self.foo_all
all.each(&:bar)
end
def bar
author.baz
end
end
Run Code Online (Sandbox Code Playgroud)
现在,我遇到的问题是,当author.blogs.foo_all
调用方法时,该类似乎Blog
有一个current_scope
!这意味着在该author.baz
方法内部时,任何查询都Blog
具有author
查询范围 ( WHERE authors.id == 123
)!
使用一个例子,其中
这就是发生的事情:
Class Author < ApplicationRecord
has_many :blogs
def baz
id # 456
blogs.count # "SELECT count(*) FROM blogs WHERE blogs.author_id == 456"
Blog.count # "SELECT count(*) FROM blogs WHERE blogs.author_id == 456"
Blog.current_scope # "[Blog id: 123, …
Run Code Online (Sandbox Code Playgroud) 我想与一个朋友(或一对)一起编程一个项目的同一个Dropbox文件夹.我想将所有资源放在同一个文件夹中,包括config和db文件.我真正想知道的是,为什么这可能是一个坏主意.
我已经可以想到一堆积极因素:
这不能替代正确的源代码控制和版本控制,我们仍然会使用Git.Dropbox确实有30天版本,但由于显而易见的原因,它无法替代.
我认为这在开始变得如此之快以至于每个团队成员拥有完全相同的一切副本时非常重要.如果重要的话,这是一个Rails应用程序.
我通过运行good ole创建了一个CSR
$ openssl req -nodes -newkey rsa:4096 -keyout example.key -out example.csr
Run Code Online (Sandbox Code Playgroud)
这产生了一个example.csr和example.key
然后,我签了它并收到了4个.crt文件.我的域.crt,2个中间体和根.
从这里:http://docs.aws.amazon.com/IAM/latest/APIReference/API_UploadServerCertificate.html,我认为亚马逊希望我的私钥被PEM编码,所以我跑了
$ openssl rsa -in example.key -text > example.pem
Run Code Online (Sandbox Code Playgroud)
Cloudfront还需要他们称之为CertificateChain的内容,以及来自https://bryce.fisher-fleig.org/blog/setting-up-ssl-on-aws-cloudfront-and-s3/和http://docs.aws. amazon.com/IAM/latest/UserGuide/InstallCert.html#SampleCert,似乎该文件应该是连接在一起的2个中间证书.所以我使用文本编辑器创建了该文件,并将其命名为example.crt.chain
最后,随着所有这一切,我跑了
$ aws iam upload-server-certificate --server-certificate-name star-assets-example-com --certificate-body file://STAR_assets_example_com.crt --private-key file://example.pem --certificate-chain file://example.crt.chain --path /cloudfront/assets/
Run Code Online (Sandbox Code Playgroud)
这让我回到了"ServerCertificateMetadata".最后,我访问了Cloudfront控制台并尝试将该证书设置为cloudfront的"自定义SSL证书".但是,它告诉我
AWS Error Code: InvalidViewerCertificate, AWS Error Message: The specified SSL certificate doesn't exist in the IAM certificate store, isn't valid, or doesn't include a valid certificate chain.
Run Code Online (Sandbox Code Playgroud)
我试过的修改.
activerecord ×3
javascript ×3
node.js ×3
associations ×2
amazon-iam ×1
belongs-to ×1
cors ×1
debugging ×1
dropbox ×1
express ×1
firefox ×1
has-many ×1
has-one ×1
middleware ×1
openssl ×1
pem ×1
postgresql ×1
redis ×1
safari ×1
script-tag ×1
websocket ×1