小编Rob*_*yes的帖子

如何停止绑定到AMQP默认交换?

每次我将 AMQP 队列绑定到交换器时,它似乎都会自动绑定到“默认”直接交换器。

这是使用rabbitMQ服务器和node.js的代码:

var amqp = require('amqp');

var connection = amqp.createConnection({host:'localhost'});

connection.on('ready', function(){
    var q = connection.queue('test_queue_name');
    var exc = connection.exchange('test_exchange', { autoDelete:true });
    q.bind('test_exchange', 'test.key');
});
Run Code Online (Sandbox Code Playgroud)

这是使用“rabbitmqctl list_bindings”命令时的控制台输出:

Listing bindings ...
        exchange        test_queue_name queue   test_queue_name []
test_exchange   exchange        test_queue_name queue   test.key        []
...done.
Run Code Online (Sandbox Code Playgroud)

javascript amqp rabbitmq node.js

4
推荐指数
1
解决办法
4925
查看次数

如何从活动记录集合中获取所有has_many关联

我有两个has_many through关联模型; Taskflows和Datasets.他们有一个名为的连接表DatasetAssignments.

我使用以下命令获取所有Taskflow:

@taskflows = Taskflows.all

我知道可以从单个ActiveRecord对象获取关联,例如:

@taskflow.datasets

但是有可能Datasets从@taskflowsActiveRecord集合中获取所有相关联的内容吗?如@taskflows.datasets

任何帮助将非常感激.

楷模:

class Dataset < ActiveRecord::Base
  has_many :dataset_assignments
  has_many :taskflows, :through => :dataset_assignments
end

class Taskflow < ActiveRecord::Base
  has_many :dataset_assignments
  has_many :datasets, :through => :dataset_assignments
end

class DatasetAssignment < ActiveRecord::Base
  belongs_to :dataset
  belongs_to :taskflow
end
Run Code Online (Sandbox Code Playgroud)

database activerecord ruby-on-rails ruby-on-rails-4

4
推荐指数
1
解决办法
5719
查看次数

为什么onkeyup事件没有在javascript游戏中触发

我有一个2D游戏的开始 - 玩家可以使用箭头键在屏幕上驱动三角形.

问题在于,有时三角形将在一个方向上旋转或向前移动,直到再次按下相应的控制键并再次触发onkeyup事件.这通常发生在同时按下多个控制键的情况下.

我无法理解为什么它会被困在第一位,除非onkeyup事件因某些原因没有被解雇.非常感谢任何帮助,谢谢.

这里有一些代码,你可以在JSFiddle上找到一个完整的例子:

...

function init(){
    var canvas = document.getElementById('canvas');
    if(canvas.getContext){
        setInterval(play, 50);
    }
}

function play(){
    printTriState();
    updateTriAcceleration();
    applyTriVelocity();
    updateTriRotation();
    draw();
}

document.onkeydown = function(event){

if(!event.keyCode){
    keycode = window.event.keyCode;
} else {
    keycode = event.keyCode;
}
console.log(event.keyCode);
switch(keycode){
    //left
    case 37:
    tri.rotation = -1;
    break;

    //up
    case 38:
    tri.throttle = true;
    break;

    //right
    case 39:
    tri.rotation = 1;
    break;

    //down
    case 40:
    tri.currentSpeed = 0;
    break;

    default:
    break;
}
};

document.onkeyup = …
Run Code Online (Sandbox Code Playgroud)

javascript javascript-events onkeydown onkeyup

3
推荐指数
2
解决办法
3504
查看次数

同时使用has_one和has_many关联

我正在尝试在一种模型中使用has_one和has_many方法。一个任务流可以有许多任务,但也有一个默认任务。

我正在尝试在任务流表中创建一个包含任务ID的列。但是,当我尝试设置该默认任务时,它将不起作用。

class Taskflow < ActiveRecord::Base
    has_many :tasks
    has_one :default_task, :class_name => 'Task'

class Task < ActiveRecord::Base
    belongs_to :taskflow
Run Code Online (Sandbox Code Playgroud)

我为数据库添加种子,然后在Rails控制台中尝试将任务分配为任务流default_task:

taskflow1 = Taskflow.first
task1 = Task.first
taskflow1.default_task = task1
Run Code Online (Sandbox Code Playgroud)

这与工作流default_task值保持为“ nil”不起作用。什么是达到预期行为的正确方法?

任何帮助将非常感激。

编辑

迁移文件为:

class CreateTaskflows < ActiveRecord::Migration
  def change
    create_table :taskflows do |t|
      t.string :title
      t.string :description
      t.references :default_task
      t.timestamps null: false
    end
  end
end

class CreateTasks < ActiveRecord::Migration
  def change
    create_table :tasks do |t|
      t.string :task_type
      t.text :help
      t.text :data
      t.belongs_to :taskflow
      t.timestamps null: false
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails associations ruby-on-rails-4

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

Javascript'对象没有方法'错误

这似乎是这个网站上一个受欢迎的问题,但以前的答案并没有解决这个问题的实例.

我在node.js服务器上有一个游戏引擎的开头,但是当我设置它时,我在loop方法中出现以下错误:Object #<Timer> has no method update.

我以为我正在设置原型以获得更新方法 GameEngine.prototype.update = function(){ ... };

任何帮助解决这个问题将非常感激.谢谢.

这是整个代码:

function GameEngine(){
    this.fps = 1000/60;
    this.deltaTime = 0;
    this.lastUpdateTime = 0;
    this.entities = [];
}

GameEngine.prototype.update = function(){
    for(var x in this.entities){
        this.entities[x].update();
    }
}

GameEngine.prototype.loop = function(){
    var now = Date.now();
    this.deltaTime = now - this.lastUpdateTime;
    this.update();
    this.lastUpdateTime = now;
}

GameEngine.prototype.start = function(){
    setInterval(this.loop, this.fps);
}

GameEngine.prototype.addEntity = function(entity){
    this.entities.push(entity);
}

var game = new GameEngine();
game.start();
Run Code Online (Sandbox Code Playgroud)

javascript prototype runtime-error node.js

2
推荐指数
1
解决办法
1424
查看次数