标签: sequel

Ruby Sequel.migration中的不区分大小写的唯一性验证

我正在尝试找出一个很好的验证,以便在我的迁移中使用,这需要对用户电子邮件地址不区分大小写.简而言之,我想要的东西就像validate :email, :uniqueness => {:case_sensitive => false}无需转换所有东西来使用Rails或ActiveRecord.我可以通过正则表达式运行电子邮件,但我不喜欢这种解决方案.

我找到了一条评论[1]说你可以使用,
validates_unique(:email){ |ds| ds.opts[:where].args.map! { |x| Sequel.function(:lower, x)}; ds}
但我不明白那段代码在做什么,当我不知道那个ds对象是什么或者一切都在发生时我不想使用那些代码(为什么map!, PostgreSQL拥有Sequel.function:lower?......也许,但我不知道.)

[1] http://comments.gmane.org/gmane.comp.lang.ruby.sequel/6447

所以我需要回答两件事之一:
1)如何在纯粹的Sequel.migration(没有ActiveRecord,没有Rails)中执行不区分大小写的唯一性验证?
- 或者 -
2)如果我在网上发现的代码片段实际上是我想要的,它做什么以及它是如何工作的?(ds对象是什么以及此验证对我的数据库有何作用?)

ruby migration email-validation sequel

1
推荐指数
1
解决办法
1161
查看次数

续集迁移器未定义

我正试图通过Sequel的数据库运行一些迁移Sequel::Migrator.但是,当我跑...

DB = Sequel.sqlite
Sequel::Migrator.apply DB, 'db/migrations'
Run Code Online (Sandbox Code Playgroud)

我收到以下错误.

未初始化的常量续集:: Migrator

是什么赋予了?

ruby database-migration sequel

1
推荐指数
1
解决办法
773
查看次数

在 PostgreSQL 中使用 Sequel gem 插入数组

我在代码中创建了一个具有以下架构的表

DB.create_table :Pokemon do
  primary_key :id
  String :first_name
  String :last_name
  String :email
  String :zipcode
  String :company_name
  String :google_profile
  String :skype
  String :phone
  String :about
  String :linkedin_profile_url
  String :company_url
  column :needs , 'Text[]'
  column :offering , 'Text[]'
end
Run Code Online (Sandbox Code Playgroud)

为了需求和提供,我插入了一个带有以下代码的字符串数组

pokes=DB[:Pokemon];
off=['hello1' , 'hello2']
nee= ['need1' , 'need2']
pokes.insert(:first_name => 'abcd' ,:last_name => 'mehandiratta', :offering => off , :needs =>  nee)
Run Code Online (Sandbox Code Playgroud)

当我运行它时出现错误

PG::Error: ERROR:  column "offering" is of type text[] but expression is of type record (Sequel::DatabaseError)
LINE 1: ...fering", "needs") VALUES …
Run Code Online (Sandbox Code Playgroud)

ruby postgresql rake ruby-on-rails sequel

1
推荐指数
1
解决办法
2252
查看次数

我们如何验证Sequel.connect是否在Rails中打开了我们的SQLite3数据库?

我们试图找出我们的Rails 3.1.12应用程序是否打开带有gem续集的SQLite3数据库(版本3.6或更高版本).这是我们做的:

  1. rails console
  2. 在Rails控制台会话中,键入以下命令:

    sequel = Sequel.connect('sqlite://development')
    
    Run Code Online (Sandbox Code Playgroud)

    它返回:

    => #<Sequel::SQLite::Database: "sqlite://development">
    
    Run Code Online (Sandbox Code Playgroud)

    sequel.class也会返回:

    => Sequel::SQLite::Database
    
    Run Code Online (Sandbox Code Playgroud)

但是,当尝试从数据库中选择sequel.execute或检查表时sequel.schema,返回的文本表明该表不存在.

我们不确定数据库(这里的开发)是否已经打开.我们如何检查?

ruby sqlite ruby-on-rails-3 sequel

1
推荐指数
1
解决办法
2755
查看次数

如何更改 Sequel 迁移中列的默认值?

我有一个用户表。我正在尝试将列的默认整数值从 0 更改为 1。

到目前为止,我能想到的唯一方法是在单独的迁移中删除并添加具有更新的默认值的列。但我不想这样做,因为这会丢失预先存在的表中的数据。我一直无法在网上找到答案。

有 Sequel 方法可以做到这一点吗?

ruby migration database-migration sequel

1
推荐指数
1
解决办法
1601
查看次数

SQL查询-在两个条件下

现在我有:

WHERE flag_1 NOT IN ("D") AND flag_2 NOT IN ("D")
Run Code Online (Sandbox Code Playgroud)

我有两组人在处理相同的数据,一组完成后,他们将“标记”该数据D,但是报表仍然需要提取信息,直到两个都被标记为止D

现在,如果其中任何一个被标记D,该报告将排除数据,但是我只希望在完成并标记了这两个方面之后就将其排除D

有指导吗?

sql sequel viewpoint

1
推荐指数
1
解决办法
63
查看次数

如何使用 Sequel 刷新数据库连接

我曾经Sequel::Model.DB与数据库进行交互,但由于某种原因,数据库结构发生了更改,例如通过数据库控制台。

这个方法:

Sequel::Model.db.schema('table_name')
Run Code Online (Sandbox Code Playgroud)

仍然返回旧数据库,我猜是从第一个连接缓存的。

如何重置该缓存,或者在理想情况下确保每个请求的实际数据库连接?

我每次都尝试使用新连接:

def db
  @db ||= Sequel.connect(Sequel::Model.db.opts)
end
Run Code Online (Sandbox Code Playgroud)

但是,可以预见的是,我最终得到了这个错误:

Sequel::DatabaseConnectionError - PG::ConnectionBad: FATAL:  sorry, too many clients already
Run Code Online (Sandbox Code Playgroud)

ruby sequel

0
推荐指数
1
解决办法
758
查看次数

使用 Sequel 生成迁移

我正在使用续集。

如何生成迁移文件(即使是空的),以便其名称类似于20160313142249_create_table1.rb

即,如何让它生成“20160313142249”部分?续集能做到吗?

ruby migration sequel

0
推荐指数
1
解决办法
815
查看次数

如何获取简单的 Sequel Dataset 对象的表名?

即,给定一个数据集对象ds = DB[:transactions].where{updated_at > 1.day.ago}- 没有有趣的连接和其他东西 - 我怎么能获取表名 ( :transactions) ?

ruby sequel

0
推荐指数
1
解决办法
137
查看次数

如何使用 Ruby 中的 Sequel GEM 将 AND 与 OR 语句组合在一起?

我相当擅长 PHP (OOP & flat)。在过去一年左右的时间里,我的任务是维护 Ruby 代码库;我还在学习的一项技能。我不太清楚如何使用续集因此采用正确的过滤链AND,以及OR语句可以适当遏制。

这是我想要的 MySQL 查询结构:

SELECT * FROM `some_objects`
WHERE (
  (
    ((`datebegin` >= 1950) AND (`datebegin` <= 1959)) OR ((`dateend` >= 1950) AND (`dateend` <= 1959))
  )
  OR
  ((`datebegin` <= 1950) AND (`dateend` >= 1959))
  AND
  (NOT `datebegin` = 0) AND (NOT `dateend` = 0)
)
;
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的 Sequel 代码片段:

some_objects = where{((datebegin >= start_year) & (datebegin <= end_year)) | ((dateend >= start_year) & (dateend <= end_year))}.
               or{(datebegin <= start_year) …
Run Code Online (Sandbox Code Playgroud)

ruby orm sequel

-5
推荐指数
1
解决办法
2746
查看次数