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

ruby-on-rails – 在rails上的ruby中的undefined方法`unserializ

发布时间:2020-12-17 02:57:24 所属栏目:百科 来源:网络整理
导读:我正在升级rails应用程序,我在rails 3中有一个方法unserialize_attribue但是我无法在rails 5中看到这个方法. rails 5中unserialize_attribute的替代方法是什么,或者我可以做什么建议,谢谢 解决方法 unserialize_attribute已从rails-5中删除,但您可以以不同的
我正在升级rails应用程序,我在rails 3中有一个方法unserialize_attribue但是我无法在rails 5中看到这个方法.

rails 5中unserialize_attribute的替代方法是什么,或者我可以做什么建议,谢谢

解决方法

unserialize_attribute已从rails-5中删除,但您可以以不同的方式反序列化值,

制法:1

> @user.accessible_attribute
# => {"attr1"=>["Email id"],"attr2"=>["First Name"],"attr3"=>["Last Name"]}

> @user.attributes_before_type_cast['accessible_attribute']
# => "--- !ruby/hash:ActionController::Parametersnattr1:n- Email idnattr2:n- First Namenattr3:n- Last Namen"

方法:2

@user.instance_variable_get(:@attributes)['accessible_attribute'].value_before_type_cast
# => "--- !ruby/hash:ActionController::Parametersnattr1:n- Email idnattr2:n- First Namenattr3:n- Last Namen"

方法:3

> @accessible_attribute = ActiveRecord::Base.connection.execute("SELECT accessible_attribute FROM users WHERE id = #{@user.id}")
   (0.4ms)  SELECT accessible_attribute FROM users WHERE id = 3
# => #<Mysql2::Result:0xe0fc374 @query_options={:as=>:array,:async=>false,:cast_booleans=>false,:symbolize_keys=>false,:database_timezone=>:utc,:application_timezone=>nil,:cache_rows=>true,:connect_flags=>-2147442171,:cast=>true,:default_file=>nil,:default_group=>nil,:adapter=>"mysql2",:encoding=>"utf8mb4",:collation=>"utf8mb4_unicode_ci",:database=>"example_development",:pool=>5,:username=>"root",:password=>"password",:socket=>"/var/run/mysqld/mysqld.sock",:flags=>2}>

> @accessible_attribute.first[0]
# => "--- !ruby/hash:ActionController::Parametersnattr1:n- Email idnattr2:n- First Namenattr3:n- Last Namen"

注意:确切地说,有些人更喜欢使用@ user.accessible_attribute.to_yaml取消序列化的属性值.

(编辑:李大同)

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

    推荐文章
      热点阅读