Ruby   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ruby-on-rails – 如何在模型中透明地修改ActiveRecord方法?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个模型,UUID存储在 MySQL表的BINARY(16)字段中.我希望能够透明地将十六进制uuid转换为二进制用于setter方法,并在我使用getter方法时返回.

什么是’正确’的方式进行?

解决方法

你重写setter和getter:
class User < ActiveRecord::Base
  def uuid=(value)
    @uuid = write_attribute(:uuid,value.scan(/../).map {|n| n.to_i(16)}.pack("C*"))
  end

  def uuid
    @uuid ||= read_attribute(:uuid).unpack("C*").map {|n| sprintf("%02x",n)}.join
  end
end

当然,您需要一个BINARY列,因为您正在向DB发送原始字节.像这样的迁移:

class AddUuidToUsers
  def self.up
    execute "alter table users ADD uuid BINARY(16)"
  end
end

大佬总结

以上是大佬教程为你收集整理的ruby-on-rails – 如何在模型中透明地修改ActiveRecord方法?全部内容,希望文章能够帮你解决ruby-on-rails – 如何在模型中透明地修改ActiveRecord方法?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。