gpt4 book ai didi

ruby-on-rails - Rails 5.1 中枚举参数的新参数错误

转载 作者:行者123 更新时间:2023-12-04 23:37:41 27 4
gpt4 key购买 nike

我有一个模型,公告,有一个枚举

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

公告 Controller 定义了 Audience_params
def announcement_params
params.require(:announcement).permit(:body, :audience, :expiry)
end

在创建公告时,观众参数是
<ActionController::Parameters {"body"=>"This is for everyone", "audience"=>"0", "expiry"=>"27/01/2018"} permitted: true>

我在公告 Controller 的操作方法中的代码包括
@announcement = Announcement.new(announcement_params)
@announcement.audience = @announcement.audience.to_i

与 rails 5.0 一起使用。但是现在第一行抛出异常
ArgumentError: '0' is not a valid audience

大概是因为观众值没有转换为整数。鉴于新方法不进行验证,为什么在 rails 5.1 中抛出此错误,我该如何解决?

最佳答案

enum旨在允许您使用符号名称而不是数字。他们定义的访问器期望您提供一个字符串或符号,而不是基础数值。

你应该使用

@announcement.audience = 'everyone'

不是
@announcement.audience = 0

这种行为可能在较新的 Rails 中有所改变,但正确的做法始终是分配人类可读的字符串,而不是数值。

关于ruby-on-rails - Rails 5.1 中枚举参数的新参数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48509715/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com