如何在RoR中为外键命名?
我使用以下命令给出外键:
rails generate scaffold Table2 id:integer Table1:references
Run Code Online (Sandbox Code Playgroud)
此命令adds foreign key of Table1 in Table2但具有默认名称Table1_id.那么我怎么能给它自定义名称,my_table_f_key而不是Table1_id.
我正在使用Ruby 1.9.2和Rails 3.0.3.
编辑:-
在我的project.rb模型中:
belongs_to :own, :class_name => User
Run Code Online (Sandbox Code Playgroud)
在我的user.rb模型中:
has_many :owned_projects, :class_name => Project, :foreign_key => :owner
Run Code Online (Sandbox Code Playgroud)
我是如何创建项目模型的
rails generate scaffold Project name:string owner:integer
Run Code Online (Sandbox Code Playgroud)
现在,当我从Project访问user_id时
project.owner.userid会抛出异常.
我想生成一个字符串,如sql命令:
"INSERT INTO xxx VALUES(XXX, XXX, XXX)"
Run Code Online (Sandbox Code Playgroud)
目前我使用StringBuilder和一些String常量像"INSERT INTO"来连接表名和插入值的输入字符串参数.
但是,除了性能问题之外,这种简单的连接看起来并不优雅.有没有其他方法这样做?
在我看来,JDBC的预处理语句是这种"命令模板"的一个很好的例子:
PreparedStatement pstmt=connection.createPreparedStatement("INSERT INTO ? VALUES(?,?,?)");
Run Code Online (Sandbox Code Playgroud)
然后你可以设置表名和插入值.
pstmt.setString(1,"tableA");
pstmt.setInt(2, 100);
...
Run Code Online (Sandbox Code Playgroud)
但是,我不能使用预备语句,因为我想要的只是String ...
有人给我一些提示使用java.util.Regex或JavaCC来生成String.但据我所知,无论选择什么代码优势问题,Java String必须由类似的东西生成StringBuilder,对吧???
我是Java的新手(实际花了三天),但我必须编写一个自定义的跨平台编辑器应用程序作为我的数据库的接口.实际上一切都运行顺利,但我有一个奇怪的包错误.inb4 3年的Python和AS3编程.
我正在尝试扩展java.util.ArrayList并加入add方法覆盖.代码看起来像这样:
package myxmleditor;
public class BarsList<EditorXMLObject> extends
java.util.ArrayList<EditorXMLObject> {
@Override
public boolean add(EditorXMLObject element) {
editorGUI.addEditorPane(element); // error here
return super.add(element);
}
public EditorGUIInterface editorGUI = null;
}
Run Code Online (Sandbox Code Playgroud)
BarsList,EditorGUIInterface和EditorXMLObject都在myxmleditor包中.addEditorPane方法是
EditorGUIInterface.addEditorPane(EditorXMLObject element)
Run Code Online (Sandbox Code Playgroud)
NetBeans向我显示错误:
method addEditorPane in class myxmleditor.TsukasaXMLEditGUI cannot be applied to given types;
required: **myxmleditor.EditorXMLObject**
found: **EditorXMLObject**
reason: actual argument EditorXMLObject cannot be converted to myxmleditor.EditorXMLObject by method invocation conversion
Run Code Online (Sandbox Code Playgroud) 我应该将哪个CSS应用于使其与背景相同的文本框,这意味着用户不会觉得他在文本框中输入?我尝试给出相同的背景颜色,但它仍然无法提供我想要的.用户仍然可以感觉到它是一个文本框.
这是我的代码:
JFrame frame = new JFrame();
frame.setSize(400, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JPanel panel1 = new JPanel(){
@Override
protected void paintComponent(Graphics g) {
int w = getWidth();
int h = getHeight();
for (int i = 0; i < w; i+=100) {
g.drawLine(i, 0, i, h);
}
}
};
panel1.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent arg0) {
}
@Override
public void mousePressed(MouseEvent arg0) {
}
@Override
public void mouseExited(MouseEvent arg0) {
}
@Override
public void mouseEntered(MouseEvent arg0) {
}
@Override
public void …Run Code Online (Sandbox Code Playgroud) 我正在尝试JDialog在java桌面应用程序中创建一个并且我不希望用户能够在关闭之前单击任何其他框架JDialog.它更像是一个JFileChooser.当JFileChooser被调用时,用户必须选择或取消后,才能对其他框架的访问.我试过使用alwaysOnTop,但用户仍然可以移动到其他框架.我怎样才能做到这一点?
我正在进行2D游戏,但我仍然遇到计时器问题.这是我的游戏循环:
void gameLoop(isRunning){
....
doStuff();
....
}
Run Code Online (Sandbox Code Playgroud)
我在循环中有一个像这样的fps测量代码:
long thisLoop = System.currentTimeMillis();
delta = thisLoop - lastLoopTime;
lastLoopTime = thisLoop;
Run Code Online (Sandbox Code Playgroud)
所以我得到自上次循环以来已经过了多少时间.但是,每当我尝试使用System.nanoTime()而不是System,currentTimeMillis()像这样:
long thisLoop = System.nanoTime();
delta = thisLoop - lastLoopTime;
lastLoopTime = thisLoop;
Run Code Online (Sandbox Code Playgroud)
我的游戏完全搞砸了,没有渲染任何东西超过第一帧,没有错误报告只是冻结.我在胜利7 64最新java 1.6.可能有什么不对?
我想使用JAXWS在java中构建一个soap客户端.我在谷歌搜索但没有找到任何相关信息.这是我尝试过的:
QName serviceName = new QName("urn:Site", "Site");
QName portName = new QName("urn:Site", "Server_HandlerPort");
String endpointAddress = "http://myhost/url/soap";
Service service = Service.create(serviceName);
service.addPort(portName, SOAPBinding.SOAP11HTTP_BINDING, endpointAddress);
Dispatch<SOAPMessage> dispatch = service.createDispatch(portName, SOAPMessage.class, Service.Mode.MESSAGE);
BindingProvider bp = (BindingProvider) dispatch;
MessageFactory factory = ((SOAPBinding) bp.getBinding()).getMessageFactory();
SOAPMessage request = factory.createMessage();
SOAPHeader header = request.getSOAPHeader();
SOAPBody body = request.getSOAPBody();
QName payloadName = new QName("session");
SOAPBodyElement payload = body.addBodyElement(payloadName);
SOAPMessage reply = null;
try {
reply = dispatch.invoke(request);
} catch (WebServiceException wse){
wse.printStackTrace();
}
body = reply.getSOAPBody();
QName …Run Code Online (Sandbox Code Playgroud) 可能重复:
java for-loop问题
为什么输出以下代码:
for (float j2 = 0.0f; j2 < 10.0f; j2+=0.1f) {
System.out.println(j2);
}
Run Code Online (Sandbox Code Playgroud)
这个:
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.70000005
0.8000001
0.9000001
1.0000001
1.1000001
1.2000002
1.3000002
1.4000002
1.5000002
1.6000003
1.7000003
1.8000003
1.9000003
2.0000002
2.1000001
2.2
2.3
2.3999999
2.4999998
2.5999997
2.6999996
2.7999995
2.8999994
2.9999993
3.0999992
3.199999
3.299999
3.399999
3.4999988
3.5999987
3.6999986
3.7999985
3.8999984
3.9999983
4.0999985
4.1999984
4.2999983
4.399998
4.499998
4.599998
4.699998
4.799998
4.8999977
4.9999976
5.0999975
5.1999974
5.2999973
5.399997
5.499997
5.599997
5.699997
5.799997
5.8999968
5.9999967
6.0999966
6.1999965 …Run Code Online (Sandbox Code Playgroud)