加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails-5 – 轨道中Virtus的默认值

发布时间:2020-12-17 02:09:48 所属栏目:百科 来源:网络整理
导读:我正在使用带有rails(5.0.2)的virtus(1.0.5).我使用Virtus作为模型,因为它具有基于被访问页面的验证. 我的组织模型是 class Organization ApplicationRecord validates :name,presence: trueend 和使用virtus创建的表单是 class OrganizationProfileForm inc
我正在使用带有rails(5.0.2)的virtus(1.0.5).我使用Virtus作为模型,因为它具有基于被访问页面的验证.

我的组织模型是

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

和使用virtus创建的表单是

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

解决方法

我们需要在initialize方法中调用super().

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读