我刚刚将我的轨道升级到2.3.4并且我注意到了这一点:验证:我说我有一个简单的模型公司,它有一个名字.什么都没有.我想运行自己的验证:
class Company < ActiveRecord::Base
validate :something
def something
false
end
end
Run Code Online (Sandbox Code Playgroud)
保存模型实际上适用于这种情况.如果我覆盖validate()并返回false,则会发生同样的事情.我在一个更复杂的模型中注意到这一点,我的验证返回false,但是对象仍在保存...我在一个基本上空的模型中尝试了它并应用了相同的东西.我缺少一种新的做法吗?在我的一些较旧的rails代码中似乎并非如此.
我有一个简单的音乐模式:艺术家,发行,曲目和歌曲.前3个是所有逻辑结构,而第四个(Song)是(Artist,Release,Track)的特定实例,如mp3,wav,ogg等等.
我在数据库中生成有序的歌曲列表时遇到问题.美中不足的是,双方Track并Release有一个Artist.虽然Song.Track.Artist总是表演者的名字,但Song.Track.Release.Artist可能是表演者的名字,也可能是"各种艺术家"的编辑.我希望能够按其中一种排序,我无法弄清楚这项工作的正确方法.
这是我的架构:
class Artist(models.Model):
name = models.CharField(max_length=512)
class Release(models.Model):
name = models.CharField(max_length=512)
artist = models.ForeignKey(Artist)
class Track(models.Model):
name = models.CharField(max_length=512)
track_number = models.IntegerField('Position of the track on its release')
length = models.IntegerField('Length of the song in seconds')
artist = models.ForeignKey(Artist)
release = models.ForeignKey(Release)
class Song(models.Model):
bitrate = models.IntegerField('Bitrate of the song in kbps')
location = models.CharField('Permanent storage location of the file', max_length=1024)
owner = models.ForeignKey(User)
track = models.ForeignKey(Track)
Run Code Online (Sandbox Code Playgroud)
我的查询应该相当简单; …
是否有可能在java命令行应用程序中捕获Ctrl+ C信号?我想在终止程序之前清理一些资源.
在不同的操作系统上,Internet Explorer 8的行为(HTML,CSS,Javascript,...)是否存在显着差异?
换句话说,一个网页在IE8 + XP,IE8 + Vista和IE8 + Win7上的工作方式是否相同,还是有一些显着的差异?
(我知道安装的插件和字体会产生影响,但目前我的范围有点偏差;假设兼容模式X-UA-Compatible: IE=8或者edge)
虽然IEBlog包含非常有用的信息,但我没有在那里找到这些数据 - 所以我假设应该没有任何区别.然而,搜索已经出现了这个(含糊的)问题:"XP上的IE8:看起来很棒!Vista上的IE8看起来很糟糕".在此期间必须检查VM中的IE8 + {XP,V,7}.
在我们当前的项目中,我们使用ADO.NET Entity Framework作为应用程序的数据层.有些任务需要在事务中运行,因为在数据库中有很多工作要做.我正在使用TransactionScope来包围这些任务.
using (TransactionScope transactionScope = new TransactionScope(TransactionScopeOption.RequiresNew))
{
// Do something...
transactionScope.Complete();
}
Run Code Online (Sandbox Code Playgroud)
问题是我在使用TransactionScope时发生异常:
System.Data.EntityException:基础提供程序在Open上失败.---> System.Transactions.TransactionManagerCommunicationException:与底层事务管理器的通信失败.---> System.Runtime.InteropServices.COMException(0x80004005):错误HRESULT E_FAIL已从调用COM组件返回.
似乎此错误必须与MSDTC(Microsoft分布式事务处理协调器)执行某些操作.当我更改MSDTC的安全配置时,会抛出另一个异常:
System.Data.EntityException:基础提供程序在Open上失败.---> System.Transactions.TransactionManagerCommunicationException:已禁用分布式事务管理器(MSDTC)的网络访问.请使用组件服务管理工具在MSDTC的安全配置中启用DTC以进行网络访问.
但是,MSDTC已配置,TransactionScope将导致错误.有人知道这里出了什么问题吗?
显然,当我使用正则表达式时,Java的正则表达式将变音符号和其他特殊字符计为非"单词字符".
"TESTÜTEST".replaceAll( "\\W", "" )
Run Code Online (Sandbox Code Playgroud)
为我返回"TESTTEST".我想要的只是删除所有真正的非"单词字符".没有任何东西的任何方式做到这一点
"[^A-Za-z0-9äöüÄÖÜßéèáàúùóò]"
Run Code Online (Sandbox Code Playgroud)
只是意识到我忘记了ô?
Eclipse的新类型的默认模板(Window> Preferences> Code Style> Code Templates> New Java Files)如下所示:
${filecomment}
${package_declaration}
${typecomment}
${type_declaration}
创建一个新类,它看起来像这样:
package pkg;
import blah.blah;
public class FileName {
// Class is accessible to everyone, and can be inherited
}
Run Code Online (Sandbox Code Playgroud)
现在,我热切地认为访问应该尽可能地受到限制,除非明确允许,否则应该禁止继承,所以我想改变${type_declaration}声明所有类final而不是public:
package pkg;
import blah.blah;
final class FileName {
// Class is only accessible in package, and can't be inherited
}
Run Code Online (Sandbox Code Playgroud)
说起来容易做起来难.我发现谷歌搜索的唯一问题是关于Eclipse邮件列表的2004年问题,该问题未得到答复.
那么,简而言之:如何在Eclipse中更改默认的类/类型修饰符?
如果重要的话,我正在使用Eclipse Galileo(3.5).
我有一个偶尔抛出此异常的应用程序:
System.ObjectDisposedException: Cannot access a disposed object.
Object name: "Panel".
bei System.Windows.Forms.Control.CreateHandle()
bei System.Windows.Forms.Control.get_Handle()
bei System.Windows.Forms.ContainerControl.FocusActiveControlInternal()
bei System.Windows.Forms.Form.set_Active(Boolean value)
bei System.Windows.Forms.Form.WmActivate(Message& m)
bei System.Windows.Forms.Form.WndProc(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
Run Code Online (Sandbox Code Playgroud)
有没有办法在不触及代码的情况下理想地抑制此异常?我正在考虑一些注册表魔术或深奥的.NET配置.
此外,我当然也对捕获此异常的方法感兴趣.似乎没有钩子让我抓住这个例外...当然它不可重复......
在这里,我们有一个SVN存储库,其中包含一个trunk和一个分支,用于在新版本上进行开发.
分支机构即将准备好发布,所以我决定将分支机构重新整合回主干.显然存在一些冲突.包括已在主干中删除的文件中的大量树冲突.
我愉快地解决了所有的冲突并且做了主干.
问题是我们然后对分支进行了一些小的更改,所以我再次重新集成了分支,发生了所有相同的树冲突.解决它们不是问题,但是有很多问题需要一段时间来手动检查和解决它们,我不希望每次进行更改和重新集成时都要经历相同的解决过程.我曾期望SVN认识到该分支已经重新整合一次,并且只是从最后一次重新整合发生的那一点开始合并.
当我打开修订图时,它显示了主干和分支被拆分的点,但它没有显示合并.应该是?
服务器:WinServer2003(R2sp2),VisualSVNServer(1.7.2).客户端:WindowsXP(sp3),我一直在使用TortoiseSVN(1.6.5)来完成所有这些工作,但我也安装了命令行客户端.
我通过确保我的主干是最新的,并使用TortoiseSVN进行合并来进行合并,并在选择对话框时选择"重新整合分支".我将合并深度设置为"工作副本"
我是否错误地处理了这种情况?我应该采取不同的做法吗?
(也许我们的存储库布局有误.我们从trunk中分支,对分支中的新版本进行了所有更改,现在发布是因为我们正在将分支合并回到trunk.也许这是错误的方法,我已经阅读了一些人反过来做的事情,在主干中进行所有更改,并且只在你准备好发布并且分支成为受支持的发行版本时才进行分支)
我正在尝试使用LINQ将URI作为字符串存储在数据库中.
[Column(Name = "Url", DbType = "nvarchar(255)")]
public Uri Url
{
get
{
return new Uri(_url);
}
set
{
_url = value.AbsoluteUri;
}
}
private string _url;
Run Code Online (Sandbox Code Playgroud)
但是,当尝试使用以下代码获取数据时,这很好地映射到我的数据库设计:
int id = 3;
_serie = new DataContext(connString).GetTable<Serie>();
var serie = _serie.FirstOrDefault(s => s.Id == id);
Run Code Online (Sandbox Code Playgroud)
在最后一行,我得到一个例外
System.InvalidCastException: Invalid cast from System.String to System.Uri etc
Run Code Online (Sandbox Code Playgroud)
我需要做什么来正确处理我的代码中的URI,但在我的数据库中存储它是一个nvarchar(255)?这似乎很简单,但我无法弄清楚我做错了什么.
java ×3
.net ×2
c# ×2
branch ×1
coding-style ×1
command-line ×1
control-c ×1
django ×1
eclipse ×1
foreign-keys ×1
linq-to-sql ×1
merge ×1
msdtc ×1
regex ×1
sql-order-by ×1
string ×1
svn ×1
templates ×1
tortoisesvn ×1
transactions ×1
uri ×1
validation ×1
windows ×1