【问题标题】:Sequel Model set_schema not found未找到续集模型 set_schema
【发布时间】:2009-05-17 09:10:42
【问题描述】:

任何人都可以自愿为什么下面的课程不及格吗?

... src/model/user.rb:18: undefined method `set_schema' for User:Class (NoMethodError)

我查看了 Sequel-3.0 lib/ 文件夹,set_schema 方法在 ClassMethods 模块中定义。

我确信解决方案很简单。我在想它应该“按原样”工作:

require 'sequel'

class User < Sequel::Model(:user)

  set_schema do
    set_primary_key :id
    String          :name
  end 
end 

【问题讨论】:

  • 请重新编辑您的问题并添加更新,而不是添加多个答案。

标签: ruby sequel


【解决方案1】:

推荐方式...

LOGGER = Object.new()
def LOGGER.method_missing( name, args )
    puts "[#{name}] #{args}"
end

Sequel::Model.plugin(:schema)                       # I worked this out, but I can't find it documented

DB = Sequel.sqlite('sql_test.db', :loggers => [LOGGER] )

unless  DB.table_exists?( :user ) 
    DB.create_table :user  do
        set_primary_key :id
        String          :name
        String          :password
        String          :eMail
    end #create_table
end #table exists
class User < Sequel::Model(:user)

【讨论】:

    【解决方案2】:

    答案是调用插件进行模式管理。即。

    require 'sequel'
    require 'logger'
    
    LOGGER = Object.new()
    def LOGGER.method_missing( name, args )
        puts "[#{name}] #{args}"
    end
    
    **Sequel::Model.plugin(:schema)**            # I still didn't find this documented
    
    DB = Sequel.sqlite('sql_test.db', :loggers => [LOGGER] )
    
    
    class User < Sequel::Model(:user)
    
      set_schema do
        set_primary_key :id
        String          :name
      end 
    end 
    

    【讨论】:

      【解决方案3】:

      是的 Sequel::Model.plugin(:schema) 也为我工作。在文档中看不到它,我很困惑为什么,因为我有另一个工作项目使用 set_schema 没有大惊小怪。

      【讨论】:

      • 嗨 Joe ... Y 是的,我查看了 Sequel 现在的新工作方式,它使用插件来处理模式等内容。在续集邮件列表中,他们建议我按照所示进行操作以下。祝你好运。
      猜你喜欢
      • 1970-01-01
      • 2021-03-20
      • 1970-01-01
      • 2020-05-30
      • 1970-01-01
      • 2021-05-13
      • 1970-01-01
      • 2018-08-04
      • 2012-10-19
      相关资源
      最近更新 更多