在rails中,保存active_record对象时,也会保存其关联的对象.但是has_one和has_many关联在保存对象时有不同的顺序.
我有三个简化模型:
class Team < ActiveRecord::Base
has_many :players
has_one :coach
end
class Player < ActiveRecord::Base
belongs_to :team
validates_presence_of :team_id
end
class Coach < ActiveRecord::Base
belongs_to :team
validates_presence_of :team_id
end
Run Code Online (Sandbox Code Playgroud)
我希望在team.save被召唤时,球队应该在其关联的教练和球员之前得到保存.
我使用以下代码来测试这些模型:
t = Team.new
team.coach = Coach.new
team.save!
Run Code Online (Sandbox Code Playgroud)
team.save! 返回true.
但在另一个测试中:
t = Team.new
team.players << Player.new
team.save!
Run Code Online (Sandbox Code Playgroud)
team.save! 给出以下错误:
> ActiveRecord::RecordInvalid:
> Validation failed: Players is invalid
Run Code Online (Sandbox Code Playgroud)
我发现team.save!按以下顺序保存对象:1)玩家,2)团队,3)教练.这就是我收到错误的原因:当玩家被保存时,团队还没有id,所以validates_presence_of :team_id玩家失败了.
有人可以向我解释为什么按此顺序保存对象?这对我来说似乎不合逻辑.
任何人都可以总结Twitter的REST API和它的Streaming API之间的差异吗?
它们中的任何一个都使用Push技术吗?
接口(或所有方法抽象的抽象类)是静态类型语言(如C#,JAVA)中的强大武器.它允许以统一的方式使用不同的派生类型.设计模式鼓励我们尽可能地使用界面.
但是,在动态类型语言中,在编译时不会检查所有对象的类型.它们不必实现以特定方式使用的接口.您只需要确保它们定义了一些方法(属性).这使得接口不是必需的,或者至少不像在静态语言中那样有用.
典型的动态语言(例如ruby)是否具有接口?如果确实如此,那么拥有它有什么好处?如果没有,那么我们是否会失去许多需要界面的漂亮设计模式?
谢谢.
在C++中,如何将字符串拆分为大小均匀的字符串?
例如,我有一个字符串"012345678",并希望它将它分成5个较小的字符串,这应该给我一些像"01","23","45","67","8"这样的东西.
我无法确定较小字符串的长度.在前面的示例中,原始字符串的大小为9,我想将其拆分为5个较小的字符串,因此除了最后一个字符串之外的每个较小的字符串应该是9/5 = 1的长度,但最后一个字符串的长度为9 - 1*4 = 5,这是不可接受的.
所以这个问题的正式定义是:原始字符串被拆分为完全n个子字符串,并且没有两个子字符串的长度差异应大于1.
我的重点不是C++语法或库.这是如何设计算法,以便返回的字符串的大小几乎相等.
是否可以要求组织模式报告我在一段时间内工作的TODO项目列表?
我们可以假设每个Todo条目都有一个时间标记,例如<2014-03-13 Thu 17:04>
我们可以在非UI线程中更新WPF控件的数据上下文吗?
假设我们有一个Label有MyClass作为数据上下文,并绑定Content到MyProperty:
<Label Name="label" Content="{Binding MyProperty}" />,
其中,MyClass无非是:
public class MyClass : INotifyPropertyChanged
{
int _myField;
public int MyProperty
{
get
{
return _myField;
}
set
{
_myField = value;
PropertyChanged(this, new PropertyChangedEventArgs("MyProperty"));
}
}
public event PropertyChangedEventHandler PropertyChanged;
}
Run Code Online (Sandbox Code Playgroud)
在非UI线程中,我们可以myClass.MyProperty = "updated"更新标签的内容,但我们不能label.Content = "updated"直接做.那是对的吗?
我自己的答案:
这是我发现的:
ObserverableCollection绑定到控件的项添加项或从中删除项.但有一个解决方法:http://geekswithblogs.net/NewThingsILearned/archive/2008/01/16/have-worker-thread-update-observablecollection-that-is-bound-to-a.aspx我正在调试一个非常复杂的C++函数,它在某些输入下给了我一些意想不到的结果.我想比较不同输入下的代码执行,以便找出导致我错误的部分.我正在寻找可以比较代码执行路径的工具.如果存在这样的工具,请告诉我.或者,如果有一些技巧我可以用来做同样的事情?
为了具体地描述我的问题,我在这里使用一个人为的例子.
假设这是伪代码中的函数,
double payTax(double income)
{
if (income < 10000)
return noTax();
else if ( 10000 < income < 30000)
return levelOneTax();
else if (30000 < income < 48000)
return levelTwoTax();
else
return levelThreeAboveTax();
}
Run Code Online (Sandbox Code Playgroud)
给定输入15000,该函数计算正确的税额,但不知何故输入16000给出错误的税额.据推测,输入15000和16000会导致函数完全执行相同的执行路径; 另一方面,如果它们走的是不同的路径,那么功能中的某些东西一定出错了.因此,比较执行路径的工具会显示足够的信息,可以帮助我快速识别错误.我正在寻找这样一个工具.最好与Visual Studio 2010兼容.如果这样的工具还保留变量值,那就更好了.
PS调试是我想要做的最后一件事,因为我正在使用的代码库比简单的payTax示例更大更复杂.
请帮忙.谢谢.
我正在使用EGit和mylyn.当我以前将代码提交到git存储库时,提交对话框将由默认消息填充,显示任务ID,任务描述等.
现在我不再看到默认提交消息了.
我在网上查了一下,人们建议需要安装EGit Mylyn插件,我确实安装了该插件.
有没有办法绑定到Tkinter中的所有数字键?
它应该等同于:
frame.bind("0", my_handler)
frame.bind("1", my_handler)
frame.bind("2", my_handler)
...
Run Code Online (Sandbox Code Playgroud)
我希望我能找到类似的东西:
frame.bind("< num>", my_handler)
Run Code Online (Sandbox Code Playgroud)
但显然这不起作用.
我有以下代码:
<%-- other tags --%>
<table>
<tr width="100%">
<td width="130" />
<td id="BottomCell" width="100%" />
</tr>
<tr>
<td/>
<td/>
</tr>
</table>
<%-- other tags --%>
Run Code Online (Sandbox Code Playgroud)
页面上可能有多个表。我希望td在加载页面时删除(或隐藏)之前的“BottomCell”。我怎样才能用 javascript 或 css 做到这一点?
谢谢。
顺便说一句,我正在开发一个将被放到页面上的 Sharepoint WebPart。位于该页面上,我无法直接控制该页面。但只要它显示在页面上,WebPart 就应该将其删除。
考虑我有一个DataContext db,并且有一个Entity类User.因此,当System.Data.Linq.Table<User> table = db.GetTable<User>();第一次调用时,它是否立即从数据库中提取数据,是否使用延迟执行,或者数据是否已在db初始化时从数据库加载?
例如,给定一个python numpy.ndarray a = array([[1, 2], [3, 4], [5, 6]]),我想选择数组的第0行和第2行a到一个新数组b,这样b就变成了array([[1,2],[5,6]].
我需要解决方案来处理更常见的问题,原始的2d数组可以有更多的行,我应该能够根据一些不相交的范围选择行.一般来说,我一直在寻找类似于a[i:j] + a[k:p]1-d列表的东西,但似乎2d-arrays不会以这种方式加起来.
更新
似乎我可以使用vstack((a[i:j], a[k:p]))这个工作,但有没有任何优雅的方式来做到这一点?