Tag: postgresql

使用postgreSQL奇怪行为增加计数器和rails“first”

当我使用increment_counter递增一些整数列并传递一些记录ID然后尝试使用Model.first获取第一个记录时,这将返回记录ID加1。 像这样的东西: Model.increment_counter :field, id Model.first 它返回的不是 Model.find(1) 但 Model.find(id+1) 这是postgreSQL的一些特殊问题吗?

传递给#or的关系必须在结构上兼容。 不兼容的值:

我有两个查询,我需要一个or它们之间,即我想要第一个或第二个查询返回的结果。 第一个查询是一个简单的where() ,它获取所有可用的项目。 @items = @items.where(available: true) 第二个包括join()并给出当前用户的项目。 @items = @items .joins(:orders) .where(orders: { user_id: current_user.id}) 我尝试以各种forms将这些与Rails’ or()方法结合起来,包括: @items = @items .joins(:orders) .where(orders: { user_id: current_user.id}) .or( @items .joins(:orders) .where(available: true) ) 但我一直遇到这个错误,我不知道如何解决它。 Relation passed to #or must be structurally compatible. Incompatible values: [:references]

查询Rails中的Postgres JSON数组字段

我试图在Postgres数据库中查询某个值。 我在users表中有一个名为groups的字段,可以用以下任一方式表示: 1。 groups: {“data”=>[{“serie”=>5, “year”=>3, “specialization”=>”Matematica”, “management_id”=>1, “group_number”=>2}, {“serie”=>5, “year”=>3, “specialization”=>”Matematica”, “management_id”=>1, “group_number”=>2}]} 2。 groups: [{“serie”=>5, “year”=>3, “specialization”=>”Matematica”, “management_id”=>1, “group_number”=>2}, {“serie”=>5, “year”=>3, “specialization”=>”Matematica”, “management_id”=>1, “group_number”=>2}] 我对这两种陈述都很好。 但是,我似乎无法找到如何让所有使用serie 5的用户说出来。 我尝试了多个查询: @users = User.where(“groups ->> ‘data’ @> ?”, {serie: 5}) @users = User.where(“groups -> ‘data’ @> ‘?'”, {serie: 5}) @users = User.where(“groups ->> ‘data’ ->> ‘serie’ […]

Rails postgresql如何将事务隔离级别设置为可序列化

我有一个评论模型,属于一个主题模型。 在Comment模型中,我有一个before_create回调 def on_create Topic.transaction(:require_new => true) do Topic.connection.execute(‘SET TRANSACTION ISOLATION LEVEL SERIALIZABLE’) self.topic.increment!(:comment_counter) if conditions end end 问题是我得到一个ActiveRecord::StatementInvalid: PGError: ERROR: SET TRANSACTION ISOLATION LEVEL must be called before any query 。 有没有其他方法来设置事务隔离级别?

如何将现有的rails应用程序移动到heroku? (sqlite到postgres)

我有一个已经存在数据的Ruby on Rails应用程序。 我使用了默认的SQLite数据库设置,因此这是我所有数据所在的位置,但我需要将所有数据都放到heroku上的Postgres数据库中。 我怎么做?

PostgreSQL检查时间戳字段是否为空

我按照这些说明检查用户在登录时是否已被软删除。在下面的示例中,我可以检查布尔值: Class User false)) end 我更喜欢时间戳(created_at)字段。 如何检查这样的字段是否为空? 数据库为以下检查抛出错误: super(conditions.merge(:deleted_at => false)) # also tried nil, “NULL” and “IS NULL”

数据库特定迁移代码

我正在创建一个需要在多个数据库下运行的应用程序。 我目前在迁移中有一些代码,我只想在特定的数据库(postgresql和mysql)下运行。 有任何设置方法吗? 谢谢。

Postgres的观点未被rspec认可

使用Rails 3.2.18和Postgres,我有一些表,我已经为其创建了一个视图,以最小化ActiveRecord加载的数据。 在应用程序中,一切似乎都正常运行,但当我尝试运行Rspec时,我得到: ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR: relation “properties_view” does not exist (’properties_view’是’properties’表中的视图) 我该怎么做才能确保Rspec从Postgres正确加载视图?

Rails中的PostqreSQL:如何让服务器在本地运行并接受Unix域套接字上的连接?

所以我是Rails的新手,之前只使用过SQLite3,而且在使用PostgreSQL时我甚至都在努力运行一个简单的rake命令。 我只想按照安装Postgres的这个截屏video的前5分钟进行操作: http : //railscasts.com/episodes/342-migrating-to-postgresql 但即使我按照指示完成了所有操作,当我运行rake db:create:all我得到了无处不在的错误消息: could not connect to server: Permission denied Is the server running locally and accepting connections on Unix domain socket “/var/pgsql_socket/.s.PGSQL.5432”? 我到处都看到这一点,但有人可以一劳永逸地回答这个问题(如果这样的任务如此简单)? 我用homebrew来安装PostgreSQL。 当我运行which psql ,它说我正在使用usr/bin/psql中的那个,我相信它是Mac OSX Lion原生的那个(这不是一件坏事吗?我怎么切换到一个由homebrew安装,在usr/local/bin/psql ?)。 我相当肯定Postgres至少在运行:当我运行ps auxw | grep postgres ps auxw | grep postgres ,我得到了我的四个流程,例如: postgres: stats collector process postgres: autovacuum launcher process postgres: […]

使用jsonb数组的Rails(postgres)查询

我的产品模型有一个jsonb字段specs (我们使用ActiveRecord的store_accessor管理)。 我的许多产品的规格都有一个名为spec_options散列规范。 在此之前,此spec_option字段只是文本。 现在它需要是一个数组。 之前用于查询此字段的产品的范围是: scope :with_spec_options, ->(spec_options) { where(“‘#{spec_options}’::jsonb \? (specs->>’spec_option’)”) } Ruby等价物(只是为了帮助理解这是做什么): select{ |product| spec_options.include?(product.specs[‘spec_option’]) } ActiveRecord等价物(如果spec_option是常规列): where(spec_option: spec_options) 但是,既然specs[‘spec_options’]是一个数组,我不能这样做。 我想我需要使用postgres’ ?| jsonb运算符,但我无法弄清楚如何将此操作的右侧转换为正确的格式。 Ruby等价物: def self.with_spec_options(spec_options) all.select{|product| if product.specs[‘spec_options’].present? product.specs[‘spec_options’].any?{|option| spec_options.include?(option) } else false end } end 有人有想法?