问题列表 - 第47671页

Ruby on Rails - 在accepts_nested_attributes_for上进行before_save计算

我有一个发票模型,"有很多"发票项目.我有一个表单,允许您创建/编辑发票,此表单接受发票项目的嵌套属性.

在我的发票模型中,有一个"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)

任何帮助将非常感激.

ruby-on-rails nested-attributes calculated-field

7
推荐指数
1
解决办法
3470
查看次数

如何使用mod_jk挂载上下文引用的Tomcat应用程序?

我在/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)

tomcat apache2 mod-jk

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

`ghc-pkg`和`cabal`程序如何相关?(Haskell的)

据我所知,这cabal是一个管理FreeBSD软件包安装的程序pkg_add.但还有另一个工具叫做ghc-pkg.我不知道为什么有两个不同的程序.他们每个人的角色是什么?他们是如何相关的?

haskell role relationship ghc cabal

16
推荐指数
1
解决办法
1249
查看次数

为什么有些方法不是用Groovy编译的?

为什么在方法B和C没问题的情况下不编译方法A?

class A {

  methodA() {

  }

  void methodB() {


  }

  static methodC() {


  }

}
Run Code Online (Sandbox Code Playgroud)

groovy

0
推荐指数
1
解决办法
85
查看次数

我们可以定制嵌入在Solr中的Lucene吗?

我们可以在原始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的数据......

lucene solr solrj

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

C - 将当前日期放在文件名中

我有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)

c string

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

断言宏的解释

我无法评论答案本身,所以:关于使用逗号来防止需要括号对

 #define MY_ASSERT(expr) ((expr) || (debugbreak(), 0))
Run Code Online (Sandbox Code Playgroud)

这里debugbreak()返回void,但我们仍然希望将0作为右值.

(debugbreak(),0)如何返回0?我知道debugbreak()的返回值被丢弃并且返回0,但是debugbreak会生成异常,那么以后如何评估任何内容呢?我想我的问题可以推广到任何类似的二元运算符,其中被评估的第一部分退出程序.

c++

8
推荐指数
1
解决办法
282
查看次数

Java中的Process Builder和Process - 如何使用超时执行进程:

我需要在具有特定超时的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)

java process

5
推荐指数
1
解决办法
1万
查看次数

Scala中匹配String和Int之间的区别

考虑以下两个代码片段:

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.

scala scala-2.8

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

在Android中同步适配器

我正在编写自定义同步适配器.添加帐户后,它将显示要同步的数据库,基于适用于前同步联系人的Adapter.xml中的声明,同步日历.

我可以自定义这些名称.

谢谢vikas bisla

android sync adapter

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