看起来Sequel的默认选择是"select*",当你添加一些连接时会引起各种问题.至少你最终会在对象中出现错误的ID(因为那时会返回多个"id"列).做点什么
.select("people.*")
Run Code Online (Sandbox Code Playgroud)
似乎工作,但它将传入的字符串视为一个列并引用它.到目前为止,我不得不回到裸SQL来解决这个问题,但我知道必须有更好的方法.
我正在尝试从我的Rails应用程序进行本地备份,该应用程序部署到Heroku,并遇到问题.我按照这里的说明操作:http://docs.heroku.com/taps并安装了Taps.
我有两种类型的错误.我在本地创建了一个SQLite数据库,并尝试使用此命令提取数据:
(sudo)heroku db:pull sqlite://Users/username/folder/testbackup.db
要么
(sudo)heroku db:pull sqlite:// username:password@localhost/Users/username/folder/testbackup.db
但不管怎样,我得到了这个:
无法连接数据库:Sequel :: DatabaseConnectionError - > SQLite3 :: CantOpenException:无法打开数据库:无法打开数据库文件
或者,我尝试让Taps在我的应用程序中自动检测开发数据库并重写它,尽管这不是我想要的.然后我开始得到如下错误:
/opt/local/lib/ruby/site_ruby/1.8/rubygems.rb:777:in
report_activate_error': RubyGem version error: sequel(3.15.0 not ~> 3.13.0) (Gem::LoadError) from /opt/local/lib/ruby/site_ruby/1.8/rubygems.rb:211:in激活'from /opt/local/lib/ruby/site_ruby/1.8/rubygems.rb:1056:in'gem'from/Library /红宝石/宝石/ 1.8 /宝石/水龙头-0.3.10 /斌/架构:4
并最终
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4/lib/sqlite3/errors.rb:62:in`check': SQLite3 :: SQLException:PRIMARY KEY必须是唯一的(Sequel :: DatabaseError)
非常感谢,我开始尽快备份这些数据非常重要!
heroku db:pull postgresql://root:@localhost/db_name
Run Code Online (Sandbox Code Playgroud)
在此命令后显示此消息
/usr/lib/ruby/gems/1.8/gems/rest-client-1.6.1/lib/restclient/abstract_response.rb:50:警告:未来版本的parenthesize参数Loaded Taps v0.3.13警告:数据输入数据库'postgresql:// root:@ localhost/db_name'将被覆盖,无法恢复.你确定要继续吗?(Y/N)?y无法连接数据库:Sequel :: AdapterNotFound - > LoadError:没有要加载的文件 - 续集/ adapters/postgresql
如何使用db:pull
简单地说,我如何使用Sequel进行此查询?
select a.id, count(t.id)
from albums a
right join tracks t on t.album_id = a.id
group by a.id
Run Code Online (Sandbox Code Playgroud) 我正在使用pg_array扩展和后续版本4.1.1。
我添加了这样的扩展名:
Sequel::Database.extension :pg_array
Run Code Online (Sandbox Code Playgroud)
我创建了这样的一列:
alter_table :emails do
add_column :references, "text[]", null: true
end
Run Code Online (Sandbox Code Playgroud)
我可以将数组加载和检索到postgress数组列中,就像使用普通数组一样。
从上面的链接尚不清楚的是如何根据此数组列中的值执行查询。
例如,如果电子邮件表中的一行在引用列中包含以下值:
references
--------------------------------------------------------------------
{}
{5363f773bccf9_32123fe75c45e6f090953@Pauls-MacBook-Pro.local.mail}
Run Code Online (Sandbox Code Playgroud)
如何查询电子邮件表以查找包含上述值的引用数组值的行:
Email.where(references: ????)
Run Code Online (Sandbox Code Playgroud) 我正在使用数据库清理器与续集和sqlite外键约束遇到问题.具体来说,我正在使用:truncationCapybara集成测试的策略.
对于给定的示例模式:
CREATE TABLE users(id INTEGER PRIMARY KEY, name TEXT);
CREATE TABLE events(id INTEGER PRIMARY KEY, title TEXT);
CREATE TABLE events_users(
user_id INTEGER,
event_id INTEGER,
FOREIGN KEY(user_id) REFERENCES users(id),
FOREIGN KEY(event_id) REFERENCES events(id)
);
Run Code Online (Sandbox Code Playgroud)
和续集模特:
class User < Sequel::Model
many_to_many :events
end
class Event < Sequel::Model
many_to_many :users
end
Run Code Online (Sandbox Code Playgroud)
运行以下内容:
# normally this would be run in
# an rspec before(:each) for my :feature specs
DatabaseCleaner.start
DatabaseCleaner.strategy = :truncation
bob = User.create(name: "bob")
sally …Run Code Online (Sandbox Code Playgroud) 我的意思是之前建立的那个
DB = Sequel.sqlite('my_blog.db')
Run Code Online (Sandbox Code Playgroud)
要么
DB = Sequel.connect('postgres://user:password@localhost/my_db')
Run Code Online (Sandbox Code Playgroud)
要么
DB = Sequel.postgres('my_db', :user => 'user', :password => 'password', :host => 'localhost')
Run Code Online (Sandbox Code Playgroud)
或等等.
Sequel :: Database类没有名为"disconnect"的公共实例方法,尽管它有"连接"一个.
也许有人已经遇到过这个问题.我很感激任何想法.
我正在尝试实现一个表单来搜索我的帖子标题。
这是控制器代码:
post '/search' do
@results = Post.all(:Title.like => "%#{params[:query]}%")
erb :layout
end
Run Code Online (Sandbox Code Playgroud)
这是layout.erb代码:
<form action="/search" method="post">
<input type="text" name="query"/><br />
<input type="submit" />
</form>
<% if @results %>
<table>
<%@results.each do |r|%>
<tr valign="top">
<td><%=r.Title%></td>
</tr>
<%end%>
</table>
<% end %>
Run Code Online (Sandbox Code Playgroud)
我收到一条错误消息,提示“未定义方法‘类似’:标题:符号”。
如何在 Sequel 迁移中创建 hstore 列?
Sequel.migration do
change do
add_column :logs, :geo, HStore
end
end
Run Code Online (Sandbox Code Playgroud)
失败。我必须加载扩展吗?
使用 Sequel 时,我仍然找不到解决关联工厂问题的解决方案。
我有两个模型依赖于one_to_many,这与has_manyActive Record 中的相同,以及 与 Active Recordmany_to_one中的相同belongs_to。
以下是定义的工厂:
FactoryGirl.define do
to_create { |instance| instance.save }
factory :post do
title "some title"
end
end
FactoryGirl.define do
to_create { |instance| instance.save }
factory :comment do
content "some content"
association :post, strategy: :build
end
end
Run Code Online (Sandbox Code Playgroud)
运行时build(:comment),它失败了:
Associated object does not have a primary key.
Run Code Online (Sandbox Code Playgroud)
有谁知道如何解决这个问题?我总是可以先构建/创建一个帖子,然后在评论中签名,但这很乏味。不仅如此,我还必须删除association :post, strategy: :build并使用一些 Integer 随机值。
我正在使用:
factory_girl_rails 4.8.0ruby 2.4.0sequel-rails 0.9.15sequel 4.45.0