我正在尝试设置我的第一个Rails3项目,在早期,我遇到了问题,无论是uuidtools我的UUIDHelper还是回调.我显然正在尝试使用UUID和(我认为)我按照Ariejan de Vroom的文章中所描述的那样进行了设置.我已经尝试使用UUID作为主键,也只是一个补充字段,但似乎UUIDHelper永远不会被调用.
我已经阅读了许多关于Rails3中回调和/或帮助器改变的提及,但我找不到任何可以告诉我如何调整的细节.这是我现在的设置(已经进行了几次迭代):
# migration
class CreateImages < ActiveRecord::Migration
def self.up
create_table :images do |t|
t.string :uuid, :limit => 36
t.string :title
t.text :description
t.timestamps
end
end
...
end
# lib/uuid_helper.rb
require 'rubygems'
require 'uuidtools'
module UUIDHelper
def before_create()
self.uuid = UUID.timestamp_create.to_s
end
end
# models/image.rb
class Image < ActiveRecord::Base
include UUIDHelper
...
end
Run Code Online (Sandbox Code Playgroud)
任何见解都会非常感激.
谢谢.
小智 5
如果出现错误"NoMethodError(UUID:Class的未定义方法`timestamp_create')",则将set_uuid方法的内容更改为:
self.uuid = UUIDTools::UUID.timestamp_create().to_s
我相信这对于更新版本的uuidtools gem来说是必要的.
您是否在 Image 模型中声明了另一个 before_create 方法?如果是这样,您将覆盖 UUIDHelper 模块中的那个。您需要以不同的方式声明回调,或者在图像模型的回调中调用 super 。
编辑:也许将助手更改为如下所示:
module UUIDHelper
def self.included(base)
base.class_eval do
before_create :set_uuid
def set_uuid
self.uuid = UUID.timestamp_create.to_s
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10646 次 |
| 最近记录: |