Sha256: f1ea5cdd1f81b3a1b1a8a68eae0a102e7e379201b1747b4ff4b8e4a5e71a2678

Contents?: true

Size: 1.02 KB

Versions: 2

Compression:

Stored size: 1.02 KB

Contents

* 新建对象在保存之前自动设置 ID

  对于非 =auto_increment= 的主键,那么可能希望在保存对象之前,为其设置一个唯一的 ID。可以这样做:

  创建一个文件 =~/.arql.d/auto_gen_id.rb= ,内容如下:

  #+BEGIN_SRC ruby
    class ::ArqlModel
      before_create do
        if id.blank?
          id_type = self.class.columns_hash['id'].sql_type.scan(/\w+/).first
          case id_type
          when 'bigint'
            self.id = ::Arql::ID.long
          when 'char'
            self.id = ::Arql::ID.uuid
          when 'varchar'
            self.id = ::Arql::ID.uuid
          end
        end
      end
    end
  #+END_SRC
  
   然后在 =~/.arql.d/init.rb= 中引入这个文件:

   #+BEGIN_SRC ruby
     load(File.absolute_path(File.dirname(__FILE__) + "/auto_set_id.rb"))
   #+END_SRC

   前提是,你的表的主键是 =id= 字段,且类型是 =bigint= 或 =char= 或 =varchar= 之一。

   如果你的表的主键不是 =id= 字段,那么你需要修改上面的代码。

   

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
arql-0.3.31 auto-set-id-before-save-zh_CN.org
arql-0.3.30 auto-set-id-before-save-zh_CN.org