这是在这个先前的问题之后得到回答的.我实际上发现我可以从该查询中删除一个连接,所以现在工作查询是
start_cards = DeckCard.find :all, :joins => [:card], :conditions => ["deck_cards.deck_id = ? and cards.start_card = ?", @game.deck.id, true]
Run Code Online (Sandbox Code Playgroud)
这似乎有效.但是,当我尝试将这些DeckCards移动到另一个关联时,我得到ActiveRecord :: ReadOnlyRecord错误.
这是代码
for player in @game.players
player.tableau = Tableau.new
start_card = start_cards.pop
start_card.draw_pile = false
player.tableau.deck_cards << start_card # the error occurs on this line
end
Run Code Online (Sandbox Code Playgroud)
和相关的模特(画面是桌上的球员卡)
class Player < ActiveRecord::Base
belongs_to :game
belongs_to :user
has_one :hand
has_one :tableau
end
class Tableau < ActiveRecord::Base
belongs_to :player
has_many :deck_cards
end
class DeckCard < ActiveRecord::Base
belongs_to :card
belongs_to :deck …Run Code Online (Sandbox Code Playgroud) 我想要做的是有一排图像,每行6张图像.其中一些图像需要在其上方浮动另一个图像(与右下角齐平).我能够从这个线程得到它:
但是,现在我无法在第6张图像之后获得新行.无论是<BR>或<P>创建一个新行.他们只需将下一个图像向下推几个像素,但图像仍然在同一行.看起来浮动风格正在干扰<BR>和/或<P>.
我试着为开始新行的图像使用不同的样式,比如float:none和display:block,但都没有用.奇怪的是,新线在第7张图像之后开始.
这是我到目前为止所使用的:
<style type="text/css">
.containerdiv { float: left; position: relative; }
.containerdivNewLine { float: none; display: block; position: relative; }
.cornerimage { position: absolute; bottom: 0; right: 0; }
</style>
<div class="containerdiv">
<img border="0" height="188" src="myImg" width="133" />
<img class="cornerimage" height="140" src="imageOnTop" width="105" />
</div>
Run Code Online (Sandbox Code Playgroud)
对于第7张图片,当我尝试开始一个新行时,我只是用'containerdivNewLine'替换'containerdiv'类.
看起来这应该是一个简单的任务,在Preferences菜单中为不同的JRE提供选项,并且能够为每个项目设置不同的编译器和构建路径.但是,它似乎根本行不通.
例如,我将JAVA_HOME设置为Java 1.6的jre.我仍然不清楚Eclipse如何使用它,但它似乎是默认的,并没有采取项目覆盖.我还安装了Java 1.5,并在Java-> Installed JREs部分的eclipse中为此添加了一个JRE.
在我的项目中,我将编译器合规性级别设置为1.5.在项目的构建路径中,我添加了Java 1.5 JRE的系统库.但是,我正在为实现PreparedStatement的类获取编译错误,因为它没有实现仅存在于Java 1.6 PreparedStatement中的抽象方法.具体来说,方法
setAsciiStream(int, InputStream, long) and
setAsciiStream(int, InputStream)
Run Code Online (Sandbox Code Playgroud)
奇怪的是,当我们针对最初为其编写的Java 1.4编译它时,它起作用了.我们为Java 1.4添加了JRE并在项目中引用了该系统库,并将项目的编译器级别设置为1.4,并且它工作正常.但是,当我做同样的更改以试图指向Java 1.5时,它反而使用1.6.
有什么想法吗?
我正在浏览一些旧代码并发现以下内容:
public class MyClass implements Cloneable {
public Object clone() {
Object o = null;
try {
o = super.clone();
} catch (CloneNotSupportedException ex) {
}
return o;
}
}
Run Code Online (Sandbox Code Playgroud)
我已经阅读了Object.clone()上的javadocs,我正在试图找出为什么这个问题就在那里.我的意思是,我明白它必须在那里,因为Object.clone()会抛出它,但是什么时候它会到达那里,如果我只是默认扩展Object,这个类正在实现Cloneable?如果这个类被扩展并且子类没有实现Cloneable,它的用途是什么?
那么可以将捕获块留空吗?
我分叉了一个仓库,然后将它克隆到我的Mac /YATC目录中.我在另一个目录中有一个以前创建的Xcode项目(TwitterTimeline),我将其复制到了/YATC directory.我git add .在/ YATC目录中做了,只有一个空的TwitterTimeline目录被添加到repo中.没有添加其他文件.我后来发现.gitTwitterTimeline中已有一个目录.我认为Xcode必须创造出来,尽管我不记得曾经问过它.
无论如何,我删除了TwitterTimeline/.git目录.我回去/YATC试图去git add .那里,没有任何事情发生.意思是我马上做了git status,它说没有什么可以承诺的.然后我去了TwitterTimeline目录并做了git add .,得到了以下内容:
Assertion failed: (item->nowildcard_len <= item->len && item->prefix <= item->len), function prefix_pathspec, file pathspec.c, line 308.
Abort trap: 6
Run Code Online (Sandbox Code Playgroud)
这是什么?
我正在将一些代码升级到Java 5,我显然不了解泛型.我有其他类实现Comparable一次,我已经能够实现了.但是现在我有一个类,由于继承,最终尝试为2种类型实现Comparable.这是我的情况:
我有以下类/接口:
interface Foo extends Comparable<Foo>
interface Bar extends Comparable<Bar>
abstract class BarDescription implements Bar
class FooBar extends BarDescription implements Foo
Run Code Online (Sandbox Code Playgroud)
有了这个,我得到错误'接口Comparable不能用不同的参数实现多次......'
为什么我不能在FooBar中实现compareTo(Foo foo),还有在BarDescription中实现的compareTo(Bar)?这不是简单的方法重载?
编辑:我有很多扩展BarDescription的类.如果我在Bar上删除Comparable的类型参数,使其保持原始状态,那么在排序扩展BarDescription的所有类时,我会得到一堆编译器警告.这可以通过下面的通配符解答来解决吗?这个答案看起来非常复杂,难以理解维护.
我想在我的一个控制器创建方法中添加一个begin ... rescue block,以便记录更好的信息并构造正确的错误消息以返回给客户端.救援以任何方式"中断"回滚过程吗?
我假设rails自动进行回滚.它什么时候发生?在我获得救援条款时,它已经发生了吗?
我在Dreamhost上使用mySQL,我认为他们使用的是innoDB.
假设我正在做这样的事情(来自Active Record Querying指南)
Item.transaction do
i = Item.first(:lock => true)
i.name = 'Jones'
i.save
end
Run Code Online (Sandbox Code Playgroud)
是否在交易结束时自动释放锁定?我查看了Active Query指南和ActiveRecord :: Locking :: Pessimistic文档,但无法找到明确说明锁定释放位置的位置.
我们正在针对现有数据库编写新的应用程序.我正在使用Spring Data JPA,只是做了一个
MyRepository.save()
Run Code Online (Sandbox Code Playgroud)
在我的新实体上,使用
MyRepository extends CrudRepository<MyThing, String>
Run Code Online (Sandbox Code Playgroud)
我在日志中注意到hibernate在插入之前正在执行Select,并且即使使用索引它们也需要很长时间.
我在这里搜索过这个,我发现的答案通常与Hibernate有关.我对JPA很新,看起来JPA和Hibernate非常紧密地交织在一起,至少在Spring Data的上下文中使用它时.链接的答案建议使用Hibernate persist(),或以某种方式使用会话,可能来自entityManager?我没有必要对会话或entityManagers或任何直接的Hibernate API做任何事情.到目前为止,我已经使用save()和我的存储库中的一些@Query完成了简单的插入.
我们在旧代码中发现了一个错误,其中没有关闭连接.这是一个简单的解决方案,但我想知道我们如何证明它是固定的.可以选择是否使用连接池.对于池化使用,可以很容易地为池添加监视,但是当不使用连接池时,我们如何跟踪那些未闭合的孤立连接?它就像任何其他内存泄漏?
该错误看起来基本上是剪切和粘贴错误.我们有一些管理数据库连接的类,所以看起来大致如下:
OurDBConn conn1 = ConnectionManager.getConnection();
try {
// business logic
} catch () {
//
} finally {
ConnectionManager.returnConnection(conn1);
}
/// and then later in the same method
OurDBConn conn2 = ConnectionManager.getConnection();
try {
// business logic
} catch () {
//
} finally {
ConnectionManager.returnConnection(conn1); // NOTE Error: conn1 should be conn2
}
Run Code Online (Sandbox Code Playgroud)
我不知道为什么早期的编码器不只是重用原始连接,但这就是它的本质
(开始编辑/追加)
是的,连接代码也是我们的,所以我可以使用给出的答案.
但是,我不认为我问了正确的问题,尽管下面的答案回答了我提出的问题.我不确定正确的stackoverflow要做的是什么; 问另一个问题,还是编辑一个?
我应该问的一个问题是:这些孤立的,未封闭的连接如何在系统性能中表现出来?此外,由于这些连接对象仅存在于某个方法的范围内,因此连接是否有资格进行垃圾回收?然后,如果他们是gc'ed,开放连接是gc'ed的影响是什么?
(结束编辑)
java ×5
activerecord ×1
associations ×1
comparable ×1
css ×1
eclipse ×1
generics ×1
git ×1
hibernate ×1
html ×1
jdbc ×1
join ×1
locking ×1
pessimistic ×1
ruby ×1
spring ×1
transactions ×1
xcode ×1