我可以加入没有关联的表格吗? (轨道/ SQL)

时间:2016-04-05 04:46:55

标签: mysql ruby-on-rails

我有这三个班级:

class Factory < ActiveRecord::Base
  has_many :machines
end

class Machine < ActiveRecord::Base
  belongs_to :factory, inverse_of: :machines
  has_many :assembly_jobs, inverse_of: :machines
end

class AssemblyJob < ActiveRecord::Base
  belongs_to :machines, inverse_of: :assembly_jobs
end

模式

Factories
- id

Machines
- factory_id

AssemblyJobs
- machine_id
- start_time
- error_time
- finish_time

我想在factory.rb中编写一个范围,以返回任何具有任何带有error_time的汇编作业的计算机的工厂。这是可能的还是我需要将factory_id列添加到程序集作业并创建belongs_to关联?

2 个答案:

答案 0 :(得分:1)

您可以通过src方法输入自定义联接查询来连接没有关联的表:

href

但是,在您的情况下,您应该能够使用以下查询将工厂范围与具有装配作业的机器一起使用

<!DOCTYPE html>
<html>

<head>
  <title>Adding Animation</title>
<style>
  canvas {
    border: 3px #CCC solid;
  }
</style>
</head>

<body>
  <div id="container">
    <canvas id="myCanvas" height="1200" width="900"></canvas>
  </div>
  <script>
     var mainCanvas = document.querySelector("#myCanvas");
     var mainContext = mainCanvas.getContext("2d");

var canvasWidth = mainCanvas.width;
var canvasHeight = mainCanvas.height;

function drawCircle() {
    mainContext.clearRect(0, 0, canvasWidth, canvasHeight);

    // color in the background
    mainContext.fillStyle = "#EEEEEE";
    mainContext.fillRect(0, 0, canvasWidth, canvasHeight);

    // draw the circle
        ctx.beginPath(); 
        ctx.strokeStyle = "000000";
        ctx.lineWidth = 5;
        ctx.fillStyle = "yellow";
        ctx.arc(600, 450, 150, 0, Math.PI * 2, true);
        ctx.stroke();
        ctx.closePath();
        ctx.fill();

        //The smile
        ctx.beginPath();
        ctxstrokeStyle = "black";
        ctx.lineWidth = 2;
        ctx.arc(600, 475, 75, .1 * Math.PI, Math.PI * .9, false)
        ctx.stroke();
        ctx.closePath();

        //The eyes
        //Left
        ctx.save();
        ctx.scale(0.65, 1);
        ctx.beginPath();
        ctx.arc(850, 405, 40, 0 * Math.PI, Math.PI * 2, false);
        ctx.fillStyle="black";
        ctx.fill();
        ctx.stroke();
        ctx.closePath();
        ctx.restore();

        //Right
        ctx.save();
        ctx.scale(0.65, 1);
        ctx.beginPath();
        ctx.arc(1000,405,40, 0*Math.PI, Math.PI*2, false);
        ctx.fillStyle="black";
        ctx.fill();
        ctx.stroke();
        ctx.closePath();
        ctx.restore()
  }
drawCircle();
</script>
</body>
</html>

这将创建一个嵌套的INNER JOIN,其中只返回具有一个或多个具有一个或多个装配作业的计算机的工厂。

答案 1 :(得分:0)

是的,您可以加入两个没有关联的表

参考链接:

http://mapopa.blogspot.in/2010/06/rails-tip-joins-without-associations.html