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

ruby-on-rails – 用于rails 5.1中的枚举参数的新的ArgumentErro

发布时间:2020-12-17 03:07:59 所属栏目:百科 来源:网络整理
导读:我有一个模型,公告,有一个枚举 Audience = ['everyone','signed_in_only','visitor_only','app_only','exclude_app']enum audience: Audience 公告控制器定义audience_params def announcement_params params.require(:announcement).permit(:body,:audience
我有一个模型,公告,有一个枚举

Audience = ['everyone','signed_in_only','visitor_only','app_only','exclude_app']
enum audience: Audience

公告控制器定义audience_params

def announcement_params
  params.require(:announcement).permit(:body,:audience,:expiry)
end

在创建公告时,audience_params是

<ActionController::Parameters {"body"=>"This is for everyone","audience"=>"0","expiry"=>"27/01/2018"} permitted: true>

我在公告控制器的动作方法中的代码包括

@announcement = Announcement.new(announcement_params)
@announcement.audience = @announcement.audience.to_i

适用于rails 5.0.但现在第一行引发了异常

ArgumentError: '0' is not a valid audience

大概是因为观众价值尚未转换为整数.鉴于新方法没有进行验证,为什么在rails 5.1中抛出此错误,我该如何解决这个问题呢?

解决方法

枚举意味着允许您使用符号名称而不是数字.他们定义的访问器期望您提供字符串或符号,而不是基础数值.

你应该使用

@announcement.audience = 'everyone'

@announcement.audience = 0

在较新的Rails中,此行为可能已更改,但正确的事情始终是分配人类可读的字符串,而不是数值.

(编辑:李大同)

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

    推荐文章
      热点阅读