2017-03-29 4 views
3

レール(5.0.2)でvirtus(1.0.5)を使用しています。私はVirtusをモデルに使用しています。アクセスされているページに基づいてバリデーションが行われているからです。レール内のVirtusのデフォルト値

class Organization < ApplicationRecord 
    validates :name, presence: true 
end 

とフォームがヴァータスを使用して作成したとして

[組織モデルは残念ながら、上記のコードは動作しません

class OrganizationProfileForm 
    include ActiveModel::Model 
    include Virtus.model 

    attribute :call_center_number, String, default: :org_call_center_number 

    validates :call_center_number, presence: true 

    def initialize(organization) 
    @organization = organization 
    end 

    private 

    def org_call_center_number 
    @organization.call_center_number 
    end 

end 

ようです

Loading development environment (Rails 5.0.2) 
2.3.0 :001 > of = OrganizationProfileForm.new(Organization.last) 
Organization Load (0.6ms) SELECT "organizations".* FROM "organizations" ORDER BY "organizations"."id" DESC LIMIT $1 [["LIMIT", 1]] 
=> #<OrganizationProfileForm:0x007f9d61edd6a8 @organization=# <Organization id: 1, name: "Some name", call_center_number: "4892374928", created_at: "2017-03-29 09:35:22", updated_at: "2017-03-29 09:37:59">> 
2.3.0 :002 > of.call_center_number 
=> nil 

答えて

0

我々はinitializeメソッドでsuper()を呼び出す必要があります。

関連する問題