2009-05-17 12 views
3

以下のクラスが失敗する理由は誰ですか?Sequelモデルset_schemaが見つかりません

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

私は続編-3.0のlib /フォルダ内に見てきたとset_schema方法はClassMethodsモジュールで定義されています。

解決方法は簡単です。 「そのまま」私はそれが動作するはず考えていた。

require 'sequel' 

class User < Sequel::Model(:user) 

    set_schema do 
    set_primary_key :id 
    String   :name 
    end 
end 
+1

あなたの質問を再編集し、代わりに複数回答を追加することにアップデートを追加してください。 –

答えて

3

推奨方法...

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

答えは、スキーマ管理するためのプラグインを呼び出すことです。 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

イエップSequel::Model.plugin(:schema)も私のために働いた。ドキュメントでそれを見ることはできません。私はset_schemaを使って別の作業プロジェクトをしているので、なぜかといえば困惑しています。

+0

こんにちはジョー... Y はい、私は新しい方法を見ました。Sequelは現在、スキーマなどのプラグインを使用しています。続編メーリングリストで、私は以下のようにそれをするように勧めました。 幸運、w。 – will

関連する問題