假设我有以下型号:
class Computer < ActiveRecord::Base
end
我检查控制器中的所有计算机,如下所示:
@computers = Computer.all
现在我添加了一项功能来停用某些计算机并过滤停用的计算机,如下所示:
class Computer < ActiveRecord::Base
scope :not_deactivated, -> { where('deactivated IS NULL OR deactivated = ?', false) }
end
并在我的控制器中:
@computers = Computer.all.not_deactivated
此方法的问题是我必须在所有控制器中添加not_deactivated
。
是否可以在模型中执行此过滤器,以便我不必触摸控制器?
答案 0 :(得分:1)
在控制器中做的简单和常见的事情:
before_action :not_deactivated # , only [:index...]
private
def not_deactivated
@computers = Computer.where(your code)
end
由于控制器处理视图,因此无论如何都必须以某种方式启动对象。通过这样过滤,您可以使用模型过滤器实现您现在要做的事情。
答案 1 :(得分:0)
您可以通过在每次拨打<script type="text/javascript" src="Scripts/html2canvas.js"></script>
<script type="text/javascript" src="Scripts/html2canvas.min.js"></script>
document.addEventListener("DOMContentLoaded", function (event) {
document.getElementById("Print_Button").addEventListener("OnItemCommand", (function () {
html2canvas(document.getElementById("form1"), {
onrendered: function (canvas) {
cvs = canvas.toDataURL('image/png');
cvs.save("mcn.pdf")
}
});
}));
});
模型时声明default_scope
来运行此操作来实现此目的
Computer
因此,当您运行class Computer < ActiveRecord::Base
default_scope { where('deactivated IS NULL OR deactivated = ?', false) }
end
时,您获得的结果为Computer.all