我有这三个班级:
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关联?
答案 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)