我有一个发票模型,"有很多"发票项目.我有一个表单,允许您创建/编辑发票,此表单接受发票项目的嵌套属性.
在我的发票模型中,有一个"total_amount"字段,它是一个计算字段(发票项目中"金额"的总和).
我想在创建或更新发票时计算此金额.我试图在发票模型的before_save事件中执行此操作.下面的代码几乎可以工作,但是保存的总数总是落后一步.即如果我的发票总额为20美元,我编辑此发票并将发票项目更改为总计15美元,然后保存我的发票,总数不会更改.如果我打开相同的发票,然后再次保存,则总计会正确更新.
我假设下面计算总和的行是访问已经保存在数据库中的行项目,而不是那些刚刚更改过并且即将保存的行项目.但我不知道如何访问它们.
class Invoice < ActiveRecord::Base
has_many :invoice_items, :dependent => :destroy
accepts_nested_attributes_for :invoice_items, :allow_destroy => true
before_save :record_total_amount
private
def record_total_amount
self.total_amount = self.invoice_items.sum('amount')
end
end
Run Code Online (Sandbox Code Playgroud)
任何帮助将非常感激.
我在/foo上下文中有一个在Tomcat中运行的WAR应用程序,这意味着它的URL是http://example.com:8080/foo.现在我正在尝试通过mod_jk将Apache HTTP Server连接到Tomcat .这是我的workers.properties档案:
worker.list=foo
worker.foo.port=8009
worker.foo.host=localhost
worker.foo.type=ajp13
worker.foo.mount=/foo/*
Run Code Online (Sandbox Code Playgroud)
工作正常,但在此URL : http://example.com/foo. 我希望它能在http://example.com.我错过了什么?
PS.这是我的mod-jk.conf,包含在httpd.conf:
LoadModule jk_module modules/mod_jk.so
JkWorkersFile /usr/local/tomcat/conf/workers.properties
<VirtualHost *:80>
ServerName foo.example.com
JkMount /* foo
</VirtualHost>
Run Code Online (Sandbox Code Playgroud) 据我所知,这cabal是一个管理FreeBSD软件包安装的程序pkg_add.但还有另一个工具叫做ghc-pkg.我不知道为什么有两个不同的程序.他们每个人的角色是什么?他们是如何相关的?
为什么在方法B和C没问题的情况下不编译方法A?
class A {
methodA() {
}
void methodB() {
}
static methodC() {
}
}
Run Code Online (Sandbox Code Playgroud) 我们可以在原始Lucene中自定义嵌入Solr的Lucene吗?这样我们就可以在Solr的Lucene拥有"一切"了吗?
我问这个是因为我们陷入了决定Solr vs Lucene的地步,这样想:
论点1:
"如果我们选择Solr,我们将来可能会遇到死区,因此Lucene是一个更好的选择......所以我们不妨开始编写HTTP封装器,而且几乎有一半的Solr自己在Lucene之上处于更安全的一面."
论点2:
"Solr已经具备了我们想要使用的所有功能,所以为什么不直接使用呢?由于承诺Lucene的人也负责承诺Solr,所以Lucene的所有功能也可供Solr使用......"
我浏览了很多博客和帖子,上面写着:
对于需要对Lucene API类进行低级访问的非常自定义的需求的情况,Solr将是一个障碍而不是帮助,因为它是一个额外的间接层.
-http://www.lucenetutorial.com/lucene-vs-solr.html
防御论证2的一种方法是确认我们可以在Solr中定制底层的Lucene,就像我们只有Lucene一样.
有人可以提供更好的方法来结束这个论点吗?:)
ps:我们需要快速搜索索引和分片数TB的数据......
我有4个值:A,B,C,D.在使用这些值进行一组计算之后,我希望我的代码将结果输出到表单的文件中ABCD_MM.DD.YY.txt,以跟踪它何时完成.
我不太确定在C中做到这一点的最佳方法.我有一个"工作"版本使用itoa(),它不是标准的C函数,并且在编译时会在我的机器上无法识别(并且已经消失).
这是我执行此操作的代码,有人可以帮助更好(并且普遍接受)的方式吗?char数组name是使用全局范围定义的.
void setFileName(){
time_t now;
struct tm *today;
char date[9];
//get current date
time(&now);
today = localtime(&now);
//print it in DD.MM.YY format.
strftime(date, 15, "%d.%m.%Y", today);
char buff[20];
char vars[20];
//put together a string of the form:
//"ABCD_DD.MM.YY.txt"
strcpy(vars, itoa(A, buff, 20));
strcat(vars, itoa(B, buff, 20));
strcat(vars, itoa(C, buff, 20));
strcat(vars, itoa(D, buff, 20));
strcpy(name, vars);
strcat(name, "_");
strcat(name, date);
strcat(name, ".txt");
}
Run Code Online (Sandbox Code Playgroud) 我无法评论答案本身,所以:关于使用逗号来防止需要括号对
#define MY_ASSERT(expr) ((expr) || (debugbreak(), 0))
Run Code Online (Sandbox Code Playgroud)
这里debugbreak()返回void,但我们仍然希望将0作为右值.
(debugbreak(),0)如何返回0?我知道debugbreak()的返回值被丢弃并且返回0,但是debugbreak会生成异常,那么以后如何评估任何内容呢?我想我的问题可以推广到任何类似的二元运算符,其中被评估的第一部分退出程序.
我需要在具有特定超时的java中执行外部批处理文件.这意味着如果批处理执行时间超过指定的超时,我需要取消执行.
这是我写的示例代码:
public static void main(String[] args) throws IOException, InterruptedException {
ProcessBuilder p = new ProcessBuilder("c:\\wait.bat", "25"); // batch file execution will take 25 seconds.
final long l = System.currentTimeMillis();
System.out.println("starting..." + (System.currentTimeMillis() - l));
final Process command = p.start();
System.out.println("started..." + (System.currentTimeMillis() - l));
Timer t = new Timer();
t.schedule(new TimerTask() {
@Override
public void run() {
command.destroy();
}
}, 5000); // it will kill the process after 5 seconds (if it's not finished yet).
int i = command.waitFor(); …Run Code Online (Sandbox Code Playgroud) 考虑以下两个代码片段:
scala> def f1(x:Any) = x match { case i:String => i; case _ => null }
f1: (x: Any)String
scala> def f2(x:Any) = x match { case i:Int => i; case _ => null }
f2: (x: Any)Any
Run Code Online (Sandbox Code Playgroud)
为什么是f2回归类型Any,f1而是String?我期待要么返回Any要么f2返回Int.
我正在编写自定义同步适配器.添加帐户后,它将显示要同步的数据库,基于适用于前同步联系人的Adapter.xml中的声明,同步日历.
我可以自定义这些名称.
谢谢vikas bisla