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取消序列化的属性值. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |