Модель сиквела set_schema не найдена - PullRequest
4 голосов
/ 17 мая 2009

Может ли кто-нибудь добровольно заявить, почему класс ниже не получается?

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

Я посмотрел в папке lib / Sequel-3.0, а метод set_schema определен в модуле ClassMethods.

Я уверен, что решение простое. Я думал, что это должно работать "как есть":

require 'sequel'

class User < Sequel::Model(:user)

  set_schema do
    set_primary_key :id
    String          :name
  end 
end 

Ответы [ 3 ]

4 голосов
/ 01 июля 2009

Рекомендуемый способ ...

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)
3 голосов
/ 18 мая 2009

Ответ - вызвать плагин для управления схемой. Viz.

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 
1 голос
/ 27 мая 2009

Да Sequel::Model.plugin(:schema) работал и для меня. Я не вижу этого в документации, и я недоумеваю, почему, поскольку у меня есть другой рабочий проект, который использует set_schema без суеты.

...