0

確認したいのですが

MyModel.new # ...raises an error...

そしてそれ

MyOtherModel::create_my_model # ...only this should work!

これを行う良い方法は何ですか?

ありがとうございました。

4

1 に答える 1

0

私の知る限り、直接的なものは何もありません。ただし、以下は機能するはずです。

class MyModel < ActiveRecord::Base
  ..
  belongs_to :my_other_model
  def initialize( need_this_argument = nil )
    raise if need_this_argument.nil?
    super() # It is important to put the () here.
  end
end

class MyOtherModel < ActiveRecord::Base
...
  has_one :my_model
  accepts_nested_attributes_for :my_model
  def create_my_model(arguments)
    MyModel.new( true ) # Pass a non nil argument
  end
end

MyModel.new #=> RuntimeError
a =MyOtherModel.new
b = a.create_my_model
..# ここで作業を行います
b.save
a.save

于 2012-08-03T20:03:25.553 に答える