小编hrd*_*rbl的帖子

ActiveRecord何时会保存关联?

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在创建它们时添加了关联.然后,当保存模型时,它会遍历这些关联并保存它们.

activerecord ruby-on-rails associations has-many

36
推荐指数
1
解决办法
3万
查看次数

如何检测"阻止此页面创建其他对话框"

如何检测用户是否已选中该框,"阻止此页面创建其他对话框"?

为什么这是一个问题

如果用户阻止了确认框的出现,则该函数confirm('foobar')始终返回false.

如果用户无法看到我的确认对话框confirm('Are you sure?'),则用户永远不能执行该操作.

CONTEXT

所以,我使用的代码就像if(confirm('are you sure?')){ //stuff... }.因此,false来自浏览器的自动响应将阻止用户进行操作stuff.但是,如果有一种方法可以检测到用户已经选中了该框,那么我可以自动执行该操作.

我认为如果用户已禁用对话,则该函数应该抛出错误,或返回true.该功能用于确认用户请求的操作.

javascript firefox google-chrome

18
推荐指数
1
解决办法
3398
查看次数

如何删除'message'侦听器上的Redis

一个典型的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连接.

publish-subscribe websocket redis node.js

17
推荐指数
1
解决办法
5927
查看次数

使用 ActiveRecord 在 PostgreSQL 中创建包含索引列和“INCLUDE”列的索引

我想要创建的是索引之一,其中一些列被索引,另一些列被包含。PostgreSQL 在其文档中描述了这种索引

创建索引的 SQL 查询看起来像CREATE INDEX tab_x_y ON tab(x) INCLUDE (y);

在此处查看 ActiveRecord PostgreSQL 适配器文档

我没有看到任何使用此INCLUDE列功能的选项。

我必须将其作为原始 SQL 查询运行吗?还有别的办法吗?

笔记

  1. 我不是问如何运行查询或查询将使用哪个索引。
  2. 我不是问如何使用 ActiveRecord 创建常规索引。
  3. 我不是问如何使用 ActiveRecord 创建迁移。
  4. 我特别想要有关如何使用特定选项创建特定类型索引的信息。

postgresql ruby-on-rails rails-activerecord

10
推荐指数
1
解决办法
1270
查看次数

Chrome切换到脚本的串行下载

有时(不是每次,但通常)当我在本地开发时,在成功下载了数百个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

javascript google-chrome script-tag node.js

8
推荐指数
1
解决办法
546
查看次数

Safari xhr(AJAX)请求w /跨域重定向失败

如何重现这个问题

  1. 使用Safari向服务器发出AJAX请求
  2. 让服务器响应w/302到另一个域

如果任这些条件符合,它的工作原理.

  1. 使用其他浏览器,它的工作原理.
  2. 让服务器重定向到同一个域,它的工作原理.

.

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)

在此输入图像描述 在此输入图像描述

javascript safari xmlhttprequest cors http-status-code-302

7
推荐指数
1
解决办法
1104
查看次数

Rails中的可选或条件模型关联

我有一个用户模型.用户可以拥有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)

但这不起作用.这样做的正确方法是什么?

activerecord ruby-on-rails associations has-one belongs-to

5
推荐指数
1
解决办法
3553
查看次数

如何检查正在使用的 Express.js 中间件集?

背景故事:我正在尝试调试一个中间件中的问题,我认为该问题来自其他中间件。但是,我不确定。所以无论如何,我希望能够检查实际调用的中间件,因为我不确定顺序。

是否可以检查当前正在使用的中间件集?

我试图找到 Express 可能存储中间件的任何内部状态,但我无法找到。

debugging middleware node.js express

5
推荐指数
2
解决办法
3098
查看次数

ActiveRecord自定义后回调current_scope不为nil

我有一个模型(我们称之为博客)。看起来像:

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)!

使用一个例子,其中

  • 博客 ID == 123
  • 作者.id == 456

这就是发生的事情:

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)

activerecord ruby-on-rails

5
推荐指数
0
解决办法
335
查看次数

与Dropbox并行配对编程

我想与一个朋友(或一对)一起编程一个项目的同一个Dropbox文件夹.我想将所有资源放在同一个文件夹中,包括config和db文件.我真正想知道的是,为什么这可能是一个坏主意.

我已经可以想到一堆积极因素:

  • 快速同步工作.如同,几乎是即时同步.Dropbox,我注意到,它真的很快,几乎就像在当地工作一样.
  • 同时编程多个部件
  • Dropbox足够快,允许一个人添加一个方法,然后另一个人在他们之后添加一个方法
  • Eclipse或Gedit都检查文件中的更改,以便我们不会意外地结束冲突.

这不能替代正确的源代码控制和版本控制,我们仍然会使用Git.Dropbox确实有30天版本,但由于显而易见的原因,它无法替代.

我认为这在开始变得如此之快以至于每个团队成员拥有完全相同的一切副本时非常重要.如果重要的话,这是一个Rails应用程序.

dropbox

3
推荐指数
1
解决办法
813
查看次数

无法为Cloudfront制作有效的IAM SSL证书

我通过运行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)

我试过的修改.

  1. 包括但不包括链中的根证书.两者都上传但都不起作用.
  2. 我试过从我的PEM文件的头部删除"模数","privateExponent","prime1"等,这样它只包含"----- BEGIN …

openssl ssl-certificate pem amazon-cloudfront amazon-iam

3
推荐指数
1
解决办法
2547
查看次数