我有几个类似的模型(ContactEmail,ContactLetter,ContactPostalcard).
例如,ContactEmail中的每个实例(记录)表示特定的电子邮件模板已发送到特定的联系人.
所以,每一个(例如ContactEmail) belongs_to :contact
因此,在ContactEmail模型中,有一个属性ContactEmail.contact_id
.
每个联系人都有一个虚拟属性company_name.
因此,当我写下以下内容时,我将在特定集合中发送所有发送的电子邮件条件(在本例中为时间):
@sent_emails = ContactEmail.find(:all, :conditions => "conditions here")
Run Code Online (Sandbox Code Playgroud)
那么,@sent_emails.size
会告诉我发送的所有电子邮件的总数.
我的挑战:如何通过不同模型中的独特公司提取更多粒度?
我想要的输出如下所示:
FROM 8/1/10 TO 8/10/10 (where the dates are dynamic)
Calls Letter Postalcards
Company 1 4 2 4
Company 2 10 4 6
Company 3 2 3 4
Run Code Online (Sandbox Code Playgroud)
因此,Company3有2个呼叫,这意味着有两个ContactCalls记录,其中sent_date落在两个日期之间,并且相关联系人属于公司3.
公司1-3未提前设定.它需要从ContactCalls,ContactLetters和ContactPostalcards池中提取.....
挑战在于我不知道这些公司是什么.它们是每个不同记录的联系人部分的属性.所以在某些情况下,我可能让Company2有0个字母.
谢谢你的指导!:)
如何在ContactEmail模型的给定记录上找到公司:
ContactEmail.contact.company.name
Run Code Online (Sandbox Code Playgroud)
这将返回特定ContactEmail的关联公司
为什么
if (prev = this.Prev()) {
...
}
Run Code Online (Sandbox Code Playgroud)
工作但是
if (var prev = this.Prev()) {
...
}
Run Code Online (Sandbox Code Playgroud)
才不是?this.Prev()是一个Point对象的方法,如果它存在则返回对前一个Point的引用,如果不存在则返回false.我不想声明变量是全局的,我不想要像下面这样冗长的东西:
var prev = this.Prev();
if (prev) {
...
}
Run Code Online (Sandbox Code Playgroud)
编辑:什么是最优雅的方式来做我喜欢的事情?
是否有任何功能在.NET中更改文件扩展名?或者我必须重命名文件?谢谢
例如,我想将扩展名为".resxx"的目录中的每个文件重命名为.resx.我的代码有什么问题?
Dim [option] As SearchOption = SearchOption.AllDirectories [option] = SearchOption.AllDirectories
Dim fileNames As String() = Directory.GetFiles("C:\New Folder", "*.resxx", [option])
For Each f In fileNames
Dim t As New FileInfo(f.ToString)
MsgBox(Mid(f, 1, f.Length - 4))
t.MoveTo(Mid(f, 1, f.Length - 4) + ".resx")
Next
Run Code Online (Sandbox Code Playgroud) 我在一个新的Rails 3项目中为Capybara换了Webrat.我在这里浏览了Tim Riley的精彩帖子(http://openmonkey.com/articles/2010/04/javascript-testing-with-cucumber-capybara),并克隆了他的存储库,执行了示例黄瓜功能,并看到了浏览器窗口打开.所以整个Cucumber,Capybara,Selenium堆栈似乎在这种情况下运行良好.
但是,如果我创建一个新的Rails 3项目,运行设置一个类似的示例项目,并使用@javascript注释一个场景,浏览器窗口不会触发,而Cucumber场景只是失败了,通常Command failed with status (1) event
(在失败的情况下)或者未决的步骤,Cucumber通过设计触发CI工具的好处).
除了Capybara提供的@javascript功能外,所有其他功能都可以正常工作.
我错过了一些非常明显的东西吗?BDD新手是否有办法更深入地研究问题(堆栈跟踪只显示Cucumber失败时的标准rake错误).
嗨,我想知道网页上允许的div数量是否有限制?
例如,当Internet Explorer必须呈现具有一千个div的网页时,它会开始窒息吗?
假设我循环遍历一个iterable,并希望在迭代器为空时采取一些操作.我能想到的两个最好的方法是:
for i in iterable:
# do_something
if not iterable:
# do_something_else
Run Code Online (Sandbox Code Playgroud)
和
empty = True
for i in iterable:
empty = False
# do_something
if empty:
# do_something_else
Run Code Online (Sandbox Code Playgroud)
第一个取决于可迭代是一个集合(当迭代被传递到循环所在的函数/方法时是无用的)而第二个集合empty
在每次遍历循环时似乎很难看.
还有另一种我缺失的方式或者是最好的第二种方式吗?如果有一些我可以添加到循环语句中的子句会为我处理这个,就像else
make not_found
标志消失那样真的很酷.
我不是在寻找聪明的黑客.
我不是在寻找涉及大量代码的解决方案
我正在寻找一个简单的语言功能.我正在寻找一种清晰而pythonic的方法来迭代一个iterable并采取一些动作,如果iterable是空的,任何有经验的python程序员都会理解.如果我能在没有在每次迭代时设置标志的情况下这样做,那就太棒了.如果没有这样做的简单成语,那就算了吧.
为什么我创建一个JFrame然后程序仍然运行,直到(即)我用窗口的小"退出按钮"关闭它?
我寻找这个答案,但我失败了.我唯一猜到的是,当我这样做时,new JFrame()
它就像一个特殊的new
,它在EDT中保留对象的引用,因此它将始终被引用(即使它是一个匿名的"new")并且它不会被删除垃圾收集器.然后,一旦触发了窗口关闭事件,就会取消引用并销毁该对象.
假设我引用HTML页面中的表格内的元素,如下所示:
someEl = soup.findAll(text = "some text")
Run Code Online (Sandbox Code Playgroud)
我知道这个元素是嵌入在一个表中的,有没有办法找到父表而不必多次调用.parent?
<table...>
..
..
<tr>....<td><center><font..><b>some text</b></font></center></td>....<tr>
<table>
Run Code Online (Sandbox Code Playgroud) 假设我想随机选择0到30之间的数字n,其中分布是任意的,而不是统一的.每个数字具有相应的权重P(n):P(0)= 5,P(1)= 1,P(2)= 30,P(3)= 25,依此类推.如何从该集合中随机选择,以便选择数字的概率与其权重成正比?
什么是这种随机选择甚至被称为?
我可以看到实现它的一种方法:
这样的东西已经在库中实现了吗?(使用Perl.)
我需要在javascript中做很多正则表达式的东西,但是我遇到了一些语法问题,而且我似乎无法在此找到一个明确的资源...出于某种原因我做的时候:
var tesst = "afskfsd33j"
var test = tesst.match(/a(.*)j/);
alert (test)
Run Code Online (Sandbox Code Playgroud)
表明
"afskfsd33j, fskfsd33"
Run Code Online (Sandbox Code Playgroud)
我不知道为什么它给出原始和匹配字符串的输出,我想知道我怎么能得到它只是给匹配(基本上从原始字符串中提取我想要的部分)
谢谢你的建议