次のモデル定義があると考えてください。作成された瞬間から一定である必要がある特定のプロパティが必要です。
class A
property :a1, String, :freeze => true
end
このようなものはありますか?またはコールバックを使用している可能性がありますか?
次のモデル定義があると考えてください。作成された瞬間から一定である必要がある特定のプロパティが必要です。
class A
property :a1, String, :freeze => true
end
このようなものはありますか?またはコールバックを使用している可能性がありますか?
次のことを試してください。
class YourModel
property :a1, String
def a1=(other)
if a1
raise "A1 is allready bound to a value"
end
attribute_set(:a1, other.dup.freeze)
end
end
イニシャライザは内部的に通常の属性ライタに委譲するため、 を介して属性を初期化する場合、 で属性をYourModel.new(:a1 => "Your value")
変更することはできませんyour_instance.a1 = "your value".
。ただし、新しいインスタンスを作成するとき。instance = YourModel.new
一度割り当てることができますinstance.a1 = "Your Value"
。
定数を割り当てる必要がない場合は、
property :a1, String, :writer => :private
before :create do
attribute_set :a1, 'some value available at creation time'
end
十分かもしれません