Grailsでの関連付けを苦労しています。関連するドメインクラスをGrailsで保存する
class Engine {
String name
int numberOfCylinders = 4
static constraints = {
name(blank:false, nullable:false)
numberOfCylinders(range:4..8)
}
}
class Car {
int year
String brand
Engine engine = new Engine(name:"Default Engine")
static constraints = {
engine(nullable:false)
brand(blank:false, nullable:false)
year(nullable:false)
}
}
アイデアは、ユーザーが最初にエンジンを作成せずに車を作成することができ、それらの車は、デフォルトのエンジンを得ることです:のは、私は2つのドメインクラスがあるとしましょう。 CarControllerでは私が持っている:
def save = {
def car = new Car(params)
if(!car.hasErrors() && car.save()){
flash.message = "Car saved"
redirect(action:index)
}else{
render(view:'create', model:[car:car])
}
}
保存しようと、私はCar.engineフィールドにNULL値の例外を取得するので、明らかにデフォルトのエンジンが作成され、保存されていません。私は手動でエンジンを作成しようとしました:
def save = {
def car = new Car(params)
car.engine = new Engine(name: "Default Engine")
if(!car.hasErrors() && car.save()){
flash.message = "Car saved"
redirect(action:index)
}else{
render(view:'create', model:[car:car])
}
}
動作しませんでした。 Grailsは関連するクラスを保存できませんか?どのように私はそのような機能を実装できますか?
ドメインクラスを使用してデフォルトを割り当てることはできますか?私は上記のやり方で初期化を考えていますが、コントローラーではないかもしれません。 – bsr