value
新しいオブジェクトを作成するときに初期化される変数があります。ただし、この変数は私のテーブルの列ではありません。モデル内で使用し、クラス内のいくつかのメソッドで使用できるようにしたいだけです。
class MyClass < ActiveRecord::Base
def initialize (value)
@value = value
end
end
したがって、新しいオブジェクト@value
を作成すると、一時的に保持さsome text
れます。たとえば、次のようになります。
test = MyClass.new("some text")
value
テキストのみを受け入れるように変数を検証する方法はありますか?
class MyClass < ActiveRecord::Base
validates_format_of :value => /^\w+$/ # it doesn't work
def initialize (value)
@value = value
end
end
編集
私はすべての答えを試しましたが、私のRspecはまだ合格しています:
私の新しいクラス:
class MyClass < ActiveRecord::Base
validate :check_value
def check_value
errors.add(:base,"value is wrong") and return false if !@value || !@value.match(/^\w+$/)
end
def initialize (value)
@value = value
end
def mymethod
@value
end
end
私のRspec(私はそれが失敗することを期待していましたが、それでも合格です):
describe MyClass do
it 'checking the value' do
@test = MyClass.new('1111').mymethod
@test.should == '1111'
end
end
に割り当てる前に検証エラーを発生させたい1111
のですが@value
。