Tag: postgresql

使用Postgresql在Datamapper中像(ilike)一样不区分大小写

我们在Sinatra应用程序中使用Datamapper,并希望使用不区分大小写,就像在Sqlite(本地开发)和Postgresql(在生产中的Heroku上)一样。 我们有这样的陈述 TreeItem.all(:name.like =>”%#{term}%”,:unique => true,:limit => 20) 如果term是“BERL”,我们会从Sqlite和Postgresql后端获得建议“BERLIN”。 但是,如果term是“Berl”,我们只从Sqlite而不是Postgresql获得结果。 我想这与dm-postgres-adapter和dm-sqlite-adapter在生成的SQL查询中输出LIKE这一事实有关。 由于Postgresql具有区分大小写的LIKE我们得到了这个(对于我们不需要的)行为。 有没有办法像Datamapper一样不区分大小写而不诉诸于对适配器使用原始SQL查询或修补适配器以使用ILIKE而不是LIKE ? 我当然可以在两者之间使用某些东西,例如: TreeItem.all(:conditions => [“name LIKE ?”,”%#{term}%”],:unique => true,:limit => 20) 但是我们将在我们自己的代码中使用Postgresql,而不仅仅是作为适配器的配置。

如何使用ActiveRecord访问Postgres列的默认值?

我正在尝试访问Postgres 9.2数据库中列的默认值。 通过使用原始SQL,我可以validation列默认为“users_next_id()”: > db = ActiveRecord::Base.connection > db.execute(“SELECT table_name,column_name,column_default FROM information_schema.columns WHERE table_name = ‘users’ and column_name =’id'”).first => {“table_name”=>”users”, “column_name”=>”id”, “column_default”=>”users_next_id()”} 但是当我使用AR的’columns’方法时,默认值似乎是nil: [26] pry(main)> db.columns(‘users’)[0]=> # 这不会导致任何问题(除了让我困惑),但这是预期的行为吗? 我是否对“列”方法做出了错误的假设?

怎么逃避? (问号)运算符在Rails中查询Postgresql JSONB类型

我正在使用Rails 4.2和Postgres 9.4来试用新的JSONB数据类型。 我的数据库中的一个JSONB列包含一个数组,我希望能够查询此数组包含特定值的记录。 我想出了如何使用新的JSONB“问号”(“包含”)运算符来完成此操作,如下所示: http : //www.postgresql.org/docs/9.4/static/functions-json.html 所以在原始SQL中我可以像在这个例子中那样工作: SELECT * FROM people WHERE roles ? ‘32486d83-4a38-42ba-afdb-f77ca40ea1fc’; 但我无法通过ActiveRecord看到从Rails中进行此查询的任何方法。 我尝试使用“where”方法进行原始查询,如下所示: Person.where(“roles ? ?”, “32486d83-4a38-42ba-afdb-f77ca40ea1fc”) 但由于问号是用于替换参数的特殊字符,我收到此错误: ActiveRecord :: PreparedStatementInvalid:在:roles中错误的绑定变量数(1为2)? ? 我想我需要一种方法来逃避“?” 字符,因为我希望它从字面上通过。 我试过了 \? 和?? 没有运气。 任何帮助表示赞赏!

使database.yml文件在OSX上的Rails中工作

我知道在osx上使用postgres有点困难,因为它有自己的版本运行,所以为了psql到它你需要提供像这样的主机名 psql -h localhost mydatabasename -U me 但是,如何为您的database.yml文件执行此操作以获取所有轨道可爱性。 如果您尝试连接 development: adapter: postgresql username: me database: mydatabasename 你收到了经典 Couldn’t create database for {“adapter”=>”postgresql”, “username”=>”me”, “database”=>”mydatabasename”} could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket “/tmp/.s.PGSQL.5432”? 关于如何提供信息或配置osx的任何想法都不要吮吸这么多?!

错误:缺少表“self”的FROM子句条目(Rails 4 Active Record事务,postgresql 9.4))

在创建模型交易时,我使用after_create在DealPrize表上创建奖品。 Deal和DealPrize属于/ has_many关系:a Deal有许多Deal奖品,Dealprize属于Deal。 它的工作方式如下:在Deal中,我有一个列’prize-number’,我使用了after_create,以便amdin创建一个新的交易evetytime,应用程序获取此prize_number列,并创建此批量的奖品(插入尽可能多的行必要时)在DealPrize表中。 我无法在postgresql查询中使用我的Rails app moel变量。 这是一个有效的查询( 使用数字代替变量 )。 它将它写在我的数据库上。 model deals.rb CONNEXION = ActiveRecord::Base.connection def create_prizes Deal.transaction do self.120000.times do |i| CONNEXION.execute “INSERT INTO deal_prizes (deal_id, created_at, updated_at) values ( 62, ‘2009-01-23 20:21:13’, ‘2009-01-23 20:21:13’)” end end end 但是,当我按照应变量替换示例值时,我得到一个错误。 CONNEXION = ActiveRecord::Base.connection def create_prizes Deal.transaction do self.120000.times do |i| CONNEXION.execute “INSERT INTO […]

食谱模型中的成分总和创建购物清单

我有一个购物清单模型,有许多食谱,这也有很多成分。 class Shoppinglist :shoppinglistrecipezations end class Recipe :shoppinglistrecipezations has_many :ingredients, :through => :ingredienzations has_many :ingredienzations end class Ingredient :ingredienzations has_many :ingredienzations end 当我在购物模型中添加几个食谱(其中一些具有相同的成分)时,我想打印购物清单中所有配料的清单和适量的配料。 Shoppinglistingredienzations有一个整数“人”来告诉应该计算多少人服务,而食谱有一个人变量来显示食谱的人数。 Ingredienzations包含数量,测量类型(克,茶匙等)和recipe_id。

如果记录与数组中的任何ID具有相同的id,请选择记录

我无法找到正确的语法和运算符来检查记录是否与存储在Array中的任何ID具有相同的ID。 has any? function还是类似? @problem = Remedy.where([“LOWER(\”remedyName\”) LIKE?”, “%#{params[:searchremedy]}%”.downcase]).pluck(:id) @pretreatments = Treatment.joins(:remedies_treatment).where(:remedies_treatment_remedy_id == @problem) 我已将代码更新为: ids = Remedy.where([“LOWER(\”remedyName\”) LIKE?”, “%#{params[:searchremedy]}%”.downcase]).pluck(:id) @pretreatments = Treatment.joins(:remedies_treatments).where(remedies_treatments: { remedy_id: @problem }) 但是我现在得到的错误是: SELECT “treatments”.* FROM “treatments” INNER JOIN “remedies_treatments” ON “remedies_treatments”.”treatment_id” = “treatments”.”id” WHERE “remedies_treatment”.”remedy_id” IS NULL Completed 500 Internal Server Error in 157ms (ActiveRecord: 17.0ms) ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: […]

Rails – 如何将一些信息从一个表单发送到其他控制器

首先,我想描述一下我将要做的事情。 因此,我的应用程序是一组任务(例如,练习依赖于编写计算机程序),用户可以通过表单发送解决方案,服务器将编译它并返回进程结果。 我的问题是我有模型Solution ,如下所示: Solution(id: integer, exercise_id: integer, code: string, user_id: integer, created_at: datetime, updated_at: datetime, language_id: integer) 和exercise_id, user_id, language_id是外键和postgresql返回错误,它不能是空值…我用来发送此信息的表单如下所示: Send solution { role: “form” } do |f| %> “btn btn-default” %> 坦率地说,我不知道如何包含更多信息,如user.id或exercise.id。 参数看起来像: @_params {“utf8″=>”✓”, “authenticity_token”=>”abwhTn3KrVneli0pCVccoWHyzlI7cRTFK5Wo7DdYRK+lL4GwZ8jUPqdzn8ZznCHsWTkfDAFS2RP6gTkWuk33iw==”, “solution”=>{“code”=>”ds”, “language_id”=>”C++”}, “commit”=>”Wyślij”, “controller”=>”solutions”, “action”=>”create”, “exercise_id”=>”1”} SolutionController class SolutionsController < ApplicationController def index @solutions = Solution.last(20) end […]

pg gem Trace / BPT陷阱:MAC OS X上的5个错误

我最近将我的雪豹升级为狮子,并在我的一个应用程序中升级 => Booting WEBrick => Rails 3.0.4 application starting in development on http://0.0.0.0:4000 => Call with -d to detach => Ctrl-C to shutdown server [2011-08-16 17:47:27] INFO WEBrick 1.3.1 [2011-08-16 17:47:27] INFO ruby 1.9.2 (2011-07-09) [x86_64-darwin11.0.0] [2011-08-16 17:47:27] INFO WEBrick::HTTPServer#start: pid=3460 port=4000 Trace/BPT trap: 5 应用程序退出并且没有其他输出,它确实以sqlite3作为db gem运行。 我评论了所有其他gem,但是这个仍然得到了错误。 我看到这个错误不是在应用程序加载时,而是在它尝试回答第一个请求时。 任何人都知道另一个gem连接到postgresql或任何解决方法? 编辑:好的,这里有一些澄清。 我在雪豹上开始了这个项目,它运行得很好,我安装了rvm,pg gem,webrick和ruby 1.9.2-p180,我升级到狮子并继续从事其他项目,当时间来更新这个项目时,我得到了Trace/BPT trap: […]

如何在rails迁移中将数据从一个表移动到另一个表?

我已经使用这些资源设置了一个rails网站: 用户(设计)作者 我已经意识到我需要将所有作者移到用户表中,因为我现在正在为这些用户设置角色作为作者。 目前我已经尝试了以下迁移,但没有任何工作,也没有数据传输到users表: class MoveAuthorsColumnDataToUsersTable author.name.downcase.gsub(‘ ‘,”), :encrypted_password => “”, :email => “”, :avatar_file_name => author.avatar_updated_at, :avatar_content_type => author.avatar_content_type, :avatar_file_size => author.avatar_file_size, :avatar_updated_at => author.avatar_updated_at, :role_id => “3” ) end end end 我在控制器中有一个带有属性的作者模型设置,我最终会将所有作者模型关系转移给用户。 author.rb模型: class Author { :large => “980×760”, :medium => “300×300>”, :thumb => “100×100>” }, :default_url => “/images/:style/missing.png” validates_attachment_content_type :avatar, :content_type => […]