Этот автоматически не помещается компилятором, если я не помещаю его в конструктора подкласса?
Это означает, что я не должен даже заботиться об этом? В некоторых статьях они производят его.
И если у меня будет один конструктор с аргументами, то это будет конструктором, или это берет конструктора без списка аргументов?
После многочасовых ударов головой по этому вопросу, я думаю, у меня наконец-то есть решение. Это довольно безумно, так что, надеюсь, кто-то еще может показать мне, где я тупая.
Factory.define :foo do |foo|
end
Factory.define :bar do |bar|
end
Factory.define :baz do |baz|
end
Factory.define :foo_with_baz do |foo|
foo.after_create { |foo| Factory(:baz, :foo => foo) }
end
Factory.define :bar_baz do |bar_baz|
bar_baz.bar {|bar| bar.association(:bar, :foo => Factory(:foo_with_baz))
bar_baz.after_build {| bar_baz| bar_baz.baz_id = bar_baz.foo.bars.first.id }
end
Ключевой проблемой является то, что в базе данных уже должен быть foo, который можно получить только через фабрики, так как вы можете использовать локальные переменные или произвольный код ruby в factories.rb (насколько я могу судить).
-121--4435368-Таблица должна выглядеть следующим образом:
<table>
<thead>...</thead>
<tfoot>...</tfoot>
<tbody>...</tbody>
</table>
с tfoot
над tbody
. Однако он будет отображаться в нижней части таблицы
Во-первых, некоторая терминология:
Таким образом, все классы имеют по крайней мере один конструктор.
Конструкторы подклассов могут первым делом указать, какой конструктор в суперклассе следует вызвать перед выполнением кода в конструкторе подкласса.
Если конструктор подкласса не указывает, какой конструктор суперкласса следует вызвать, то компилятор автоматически вызовет в суперклассе доступный конструктор no-args.
Если суперкласс не имеет конструктора no-arg или недоступен, то не указывающий конструктор суперкласса, который необходимо вызвать (в конструкторе подкласса), является ошибкой компилятора, поэтому он должен быть указан .
Например:
public class Base { }
public class Derived extends Base { }
Это нормально, потому что если не добавить конструктор явно Java помещает в открытый конструктор по умолчанию для вас.
public class Base { }
public class Derived extends Base { public Derived(int i) { } }
Также прекрасно.
public class Base { public Base(String s) { } }
public class Derived extends Base { }
Приведенная выше ошибка компиляции, поскольку в Base отсутствует конструктор по умолчанию.
public class Base { private Base() { } }
public class Derived extends Base { }
Это также ошибка, поскольку конструктор Base no-args является частным.
Если у конструктора Super Class не имеет аргументов Java автоматически вызывает его для вас. Если у него есть аргументы, вы получите ошибку.
SRC: http://java.sun.com/docs/books/tuTorial/java/iandi/super.html