我正在为库存管理编写Rails前端.我希望用户能够注册产品,所以我有:
class User < ActiveRecord::Base
has_many :products
# <snip>
end
Run Code Online (Sandbox Code Playgroud)
和
class Product < ActiveRecord::Base
belongs_to :user
# <snip>
end
Run Code Online (Sandbox Code Playgroud)
问题是产品是在用户注册之前创建的.也就是说,这是完全可以接受的呼吁Product.create,只是把它设置user_id到nil.但是,正如您可以想象的那样,Rails不支持开箱即用:
> Product.create!
(0.3ms) SELECT COUNT(*) FROM "products" WHERE "products"."type" IN ('Product')
(0.1ms) begin transaction
(0.1ms) rollback transaction
ActiveRecord::RecordInvalid: Validation failed: User can't be blank
from ~/.rvm/gems/ruby-2.0.0-p0/gems/activerecord-3.2.13/lib/active_record/validations.rb:56:in `save!'
Run Code Online (Sandbox Code Playgroud)
我已经考虑过一堆kludgey解决方法,其中最吸引人的是有一个NullUser子类User并使用它来创建产品.但这似乎仍然是一个黑客.这是什么Rails方式?
谢谢.
相关迁移:
class AddUseridToProducts < ActiveRecord::Migration
def change
add_column :products, :user_id, :integer
end
end
Run Code Online (Sandbox Code Playgroud)
然后:
class Changeuseridtobeoptionalforproducts < ActiveRecord::Migration
def change …Run Code Online (Sandbox Code Playgroud) 我正在研究我的第一个适当的Clojure程序 - 国际象棋游戏.我有以下内容:
(defn human-move [board]
(board-utils/print-board board)
(print "Enter your move, like this: 'E7 E5' ...")
(loop [raw-move (terminal-input)] ;;(read-line)]
(println "I just received" raw-move)
(if (re-matches #"[A-H][1-8]\s[A-H][1-8]" raw-move)
(parse-move raw-move)
(do
(println "Invalid format! There should be a letter, number, space, letter, and final number.")
(print "Try again: ")
(recur (read-line))))))
Run Code Online (Sandbox Code Playgroud)
请注意read-line注释掉并替换为的位置terminal-input.read-line给了我一个NullPointerException,所以出于诊断目的:
(defn terminal-input []
(println "input")
(let [whatnot (read-line)]
(println "received" whatnot)
whatnot))
Run Code Online (Sandbox Code Playgroud)
然后,当我打电话human-move.
...
+---+---+---+---+---+---+---+---+
| P | …Run Code Online (Sandbox Code Playgroud) 我有一个 Java 项目,涉及类GUIConstants-public static final用于布局 GUI 的各种参数,因为不同的组件有时必须具有相同的大小或颜色或其他。
我目前正处于进行视觉重新设计的阶段,其中涉及更改其中一些常量。然而,ant这让这变得困难。我将更改一个参数并重新编译,但仍使用旧值。如果我对使用它的文件之一添加一些简单的修改并重新编译,将使用正确的值。但必须追踪所有文件并修改它们,这很烦人且容易出错。当然有一种方法可以强制ant重新编译未更改的文件......我只是在手册页中找不到它。
旁注:我的假设是,当编译使用变量的类时,Java 会使用值本身,而不是对变量所指向的任何内容的引用(与C 中使用常量的final方式类似)。#DEFINE因此,即使变量指向其他内容,原始值也会被烘焙到.class文件中。这是真的?(这不影响我的问题,我只是好奇。)
提前致谢。
我正在编写一个表格供用户注册其产品。我已经有了class User has_many :products和class Product belongs_to :user; attr_accessible :serial_number。所以我们的想法是,用户在表单中输入序列号,然后我打电话@user.products << Product.find_by_serial_number params[:serial_number]或类似的事情。
将其作为注册操作添加到以下似乎是明智的UsersController:
resources :users do
member do
get 'register'
end
end
Run Code Online (Sandbox Code Playgroud)
我有以下内容register.html.erb:
5: <%= render 'shared/error_messages' %>
6:
7: <%= f.label :serial_number, "Serial number" %>
8: <%= f.text_field :serial_number %>
9:
10: <%= f.submit "Register product" %>
11: <% end %>
Run Code Online (Sandbox Code Playgroud)
这会引发错误:
undefined method `serial_number' for #<User:0x000000060b1d40>
extracted source (around line #8):
...
Run Code Online (Sandbox Code Playgroud)
那么...a) 我该如何停止这个错误?b) 嗯...按下提交按钮后会发生什么?我假设它会调用该update操作(编辑表单也使用该操作)...我应该使其更胖以处理这两种可能性吗?或者做出新的动作?(如果是这样,我如何重新路由表单以指向该表单?) c) …
我的Rails网站使用了一个非常不错的宝石.每次我需要做一些新的事情时,我最终都要花费尽可能多的时间为gem添加功能,就像我在实际的Rails项目中添加代码一样.但是我不介意,我把我的Gemfile设置为指向我的GitHub宝石分叉(我尝试提交PR,但维护者似乎已经下台了).
问题是我真的没有找到一种理智的方法来测试我添加到gem中的新东西.在它内部测试它会特别好rails c,但我能想到的唯一方法是a)改变~/.rvm/gems/.../foo.rb,这似乎不正确或b)颠覆版本,推送到Github,并运行bundle up,除了耗费时间显然是一场灾难,因为我不确定我做出的提交是否正确.
我甚至对标准非常满意irb.但是require lib/foo来自gem目录内的各种排列都不起作用.
那么这里最好的做法是什么?
给出两组,例如:
{A B C}, {1 2 3 4 5 6}
Run Code Online (Sandbox Code Playgroud)
我想按照在相等元素之间放置尽可能多的空间的顺序生成笛卡尔积.例如,[A1, A2, A3, A4, A5, A6, B1…]不好,因为所有的As都是彼此相邻的.一个可接受的解决方案是"沿着对角线",然后每次它包裹偏移一个,例如:
[A1, B2, C3, A4, B5, C6, A2, B3, C4, A5, B6, C1, A3…]
Run Code Online (Sandbox Code Playgroud)
直观地表达:
| | A | B | C | A | B | C | A | B | C | A | B | C | A | B | C | A | B | C |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | | …Run Code Online (Sandbox Code Playgroud) algorithm math enumeration cartesian-product discrete-mathematics
我有一个JTable和一个旁边的按钮,它可以调用deleteSelectedRows(),它完全听起来像:
public void deleteSelectedRows() {
int[] selected = jTable.getSelectedRows();
for(int i = selected.length - 1; i >= 0; i--) {
model.removeRow(selected[i]);
}
if(model.getRowCount() < 1) {
addEmptyRow();
}
}
Run Code Online (Sandbox Code Playgroud)
但是如果一个单元格被删除时(和/或其上方的单元格)被删除,则编辑的单元格会在剩下的时间内停留,如下所示:

然后试图退出编辑投掷,ArrayIndexOutOfBoundsException因为第5行试图访问,并且表中只剩下一行.
然后,我尝试了各种有趣的游戏jTable.getEditingRow().首先,if(selected[i] != editing)在删除之前添加一个似乎工作,但然后删除编辑单元格上方的行会导致问题.
然后我尝试了这个:
public void deleteSelectedRows() {
int[] selected = jTable.getSelectedRows();
int editing = jTable.getEditingRow();
for(int s : selected) { //PS: Is there a better way of doing a linear search?
if(s == editing) {
return;
}
}
for(int i …Run Code Online (Sandbox Code Playgroud) 我需要使用Base64编码转换一些字符串,并且很高兴看到我不必滚动我自己的转换器 - Java提供了一个javax.xml.bind.DataConverter.但是,它有一些问题.这是我使用Jython REPL的时间输出:
>>> import javax.xml.bind.DatatypeConverter as DC
>>> import java.lang.String as String
>>> def foo(text):
... return DC.printBase64Binary(DC.parseBase64Binary(String(text)))
...
>>> foo("hello")
'hell'
>>> foo("This, it's a punctuated sentence.")
'Thisitsapunctuatedsenten'
>>> foo("\"foo\" \"bar\"")
'foob'
>>> foo("\"foo\" \"bar\"12")
'foobar12'
>>> foo("\"foo\" \"bar\"1")
'foob'
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,它根本不处理非字母数字字符,并且经常 - 但不总是 - 将字符串截断两个字符.
我想这可能是时候编写我自己的类了,但是现在我很烦恼a)我没有读取javadoc或其他东西b)该类没有按预期工作.
所以任何帮助都非常感谢; 提前致谢.
我有一个大型的ARFF文件,其数据看起来像这样:
555,"2011-03-13 01:50:48.000",0
540,"2011-03-13 02:10:19.000",0
Run Code Online (Sandbox Code Playgroud)
为了帮助解析它,我声明了第二个属性:
@attribute RecordedOn date "yyyy-MM-dd HH:mm:ss.SSS"
Run Code Online (Sandbox Code Playgroud)
使用Java的SimpleDateFormat的解析器适用于第一行(以及与它非常相似的几百万行),但是在几行上扼流,就像第二行一样.我注意到它只扼杀了一行其小时为"02"的行 - 实际上,如果将其更改为第二行则解析得很好540,"2011-03-13 01:10:19.000",0.为了增加这个谜团,一些带有a的行02无论如何都被解析了.喜欢:1,"2006-12-16 02:58:51.000",111
那么有谁知道发生了什么?有什么建议?提前致谢.
我正在写一个Rails应用程序,它具有以下茉莉花规格:
describe "buttons", ->
beforeEach ->
loadFixtures("foo.html")
alert("beforeEach: " + $("tr.foo").length)
describe ".hide_foo", ->
alert(".hide-foo: " + $("tr.foo").length)
...
expect($("tr.foo")).toBeHidden()
Run Code Online (Sandbox Code Playgroud)
规范因错误而失败:
TypeError: Cannot call method 'expect' of null
Run Code Online (Sandbox Code Playgroud)
所以我提出警报.首先我们看到".hide-foo:0",然后在我关闭之后"beforeEach:44"出现.很明显错误是因为我们在expect加载夹具之前调用了但是......为什么在每个例子之前没有beforeEach执行heck ?
我正在使用jasminerice来使用Rails Asset Pipeline来编译我的Coffeescript.版本:
$ bundle show jasmine && bundle show jasminerice
/home/tmacdonald/.rvm/gems/ruby-1.9.2-p320/gems/jasmine-1.2.0
/home/tmacdonald/.rvm/gems/ruby-1.9.2-p320/gems/jasminerice-0.0.9
Run Code Online (Sandbox Code Playgroud)
谢谢!
我正在写一个Lisp程序,并试图对类型有点认真.我想有性能改进,但我更感兴趣的是使用类型注释来提高文档和安全性.问题是nil.到目前为止我遇到了两个问题.
图表A:
>(defmethod foo ((bar bar-class) (quux quux-class))
...)
>(foo (make-instance 'bar-class) nil)
ERROR: No applicable method, etcetera etcetera, because nil is not of type quux-class
Run Code Online (Sandbox Code Playgroud)
图表B:
(defmethod initialize-instance :after ((f foo) &rest args)
"Initialize the grid to be the right size, based on the height and width of the foo."
(declare (ignorable args))
(setf (slot-value f 'grid) (make-array (list (width f) (height f))
:element-type 'foo-component
:adjustable nil
:initial-element nil)))
style-warning:
NIL is not a FOO-COMPONENT.
Run Code Online (Sandbox Code Playgroud)
这里的最佳做法是什么?到目前为止,我所拥有的唯一具有远程洞察力的想法是使用空对象模式 …
java ×4
ruby ×3
activerecord ×1
algorithm ×1
ant ×1
arff ×1
base64 ×1
bundler ×1
clojure ×1
clos ×1
coffeescript ×1
common-lisp ×1
decoding ×1
encoding ×1
enumeration ×1
forms ×1
gem ×1
irb ×1
jasmine ×1
javascript ×1
jtable ×1
lisp ×1
math ×1
swing ×1
types ×1
unit-testing ×1
weka ×1