Tag: mysql

Rails计数记录而不再查询

说我查询表 rawStats = Stats::TrackProcessed.select(“token”) 并收到表中所有令牌的数量。 看起来像这样: 3e79a387c29bda1069271e06ad03d82b8296242e 059681f46ab1c1fa8cf8443a82f0898172e0b646 eacd846ea4e91b49f92f416f61e0f2d075b9dae7 eacd846ea4e91b49f92f416f61e0f2d075b9dae7 811705019a970929801adbf3db0ede31ed01816c 我需要返回一个看起来像这样的哈希列表 { ‘3e79a387c29bda1069271e06ad03d82b8296242e’ => 1, ‘059681f46ab1c1fa8cf8443a82f0898172e0b646’ => 1 ‘eacd846ea4e91b49f92f416f61e0f2d075b9dae7’ => 2 ‘811705019a970929801adbf3db0ede31ed01816c’ => 1 } 第一个值是标记,第二个值是表中该标记的出现次数。 然后我需要从所有记录中获得平均值。 到目前为止,我已经查询了表 rawStats = Stats::TrackProcessed.select(“distinct token”) 通过检索唯一的令牌 然后,每个循环计算每个令牌的出现次数 rawArr = [] rawStats.each do |r| token = { :token => r.token, :count => rawStats.where(“token = ?”,r.token).count(‘token’) } rawArr << […]

用于搜索的Rails Gem

我有一个webapp,我想提供一个高级搜索,用户输入由AND和/或OR连接的任意数量的查询,如下所示: (进入网页上的搜索框) name = “john” OR (occupation = “gardener” AND hobby.main = “reading”) 在之前的文章中 ,我成功地实现了一个系统,在该系统中,我将如上格式化的查询直接转换为有效的SQL语句,并将它们直接输入SQL以查询数据库。 这有效,但现在我担心三件事: 这是一个SQL注入的怪话 如果用户的输入无效,则SQL会抛出一个不太漂亮的错误……在处理这些exception时遇到一些麻烦(尽管这部分是可行的)。 代码看起来真的很hacky,我想知道是否有更好的方法。 好吧,通过使用搜索gem,我听说有更好的方法。 但是,我一直无法找到符合我需求的gem。 许多gem看起来太 复杂了我所需要的东西,我发现的任何内容都没有明确说明你如何能够专门实现我正在寻找的东西 – 用户输入由AND / OR连接的动态数量的查询声明。 将语句直接转换为SQL语法并将其正确注入,就像我现在正在做的那样,究竟有多昂贵? 将这些gem中的一种纳入我想要的东西是多么容易? “有经验的”Rails开发人员会做什么? 我是Rails的完全noobie,所以我没有任何经验。

Ruby on Rails迁移,两个主键但只有一个自动递增

我正在构建一个RoR多租户应用程序。 因此,应用程序数据库可以托管在不同的地方,可以拆分或重新合并。 这就是为什么我需要一些主键:一个经典的自动增加的id和另一个是我的主要模型的外键(不能贬低)。 我想做那样的事情: create_table :table_name do |t| t.primary_key :id t.primary_key :second_id, :auto_increment => false # … t.timestamps end 但我找不到合适的语法,任何想法? 编辑 :我想通过迁移来做到这一点!

Ruby – Rails – SQL查询 – 在搜索词中重新排序单词

我正在开发一个带有搜索function的项目,其设置如下: if params[:search_term].present? && params[:search_term].length > 1 @candidates = @candidates.where(“title like ?”,”%#{params[:search_term]}%”) end 客户要求我“放松”搜索 – 特别是单词顺序。 目前,如果有候选人的White bar stool的标题和一个搜索White stool bar ,它没有返回任何结果。 有没有办法让我执行一个忽略单词顺序的查询? 或者,对于我来说,使用不同的单词顺序制作新的搜索词params,进行多次搜索并合并结果会更好吗?

使用LIKE对未知(动态)查询数进行SQL查询

我有一个执行动态查询的Rails搜索表单。 也就是说,用户输入如下搜索: (hobby=”skiing”) OR (gender=”male” AND hobby=”jogging”) 所以,我不知道在运行之前我会搜索多少个查询。 我通过将搜索查询转换为有效的SQL查询来解析搜索查询,因此上述搜索将转换为以下格式: query = “hobby LIKE ? OR (gender LIKE ? AND hobby LIKE ?)” queries = [“skiing”, “male”, “jogging”] 对于以下查询: where(query, queries) 但是,Rails搜索查询的一般语法非常有限: where(query, query_1, query_2, query_3) 我不能用我想要的数组替换’query_n’参数,没有Rails抛出错误。 NoMethodError (undefined method `where’ for [“a”, “b”, “c”]:Array) 尝试splat数组会产生相同的错误: where(query, *queries) 再次: NoMethodError (undefined method `where’ for [“a”, “b”, […]

query:has_many其中所有子字段都是nil

我正在使用Rails 3.2与ActiveRecord和MySQL,我有一对多关联的模型: class Author has_many :books end class Book belongs_to :author attr_accessible :review end 我想找到没有审查所有书籍的作者。 我试过了: Author.includes(:books).where(‘book.review IS NIL’) 但显然没有用,因为它找到的作者至少有一本书没有经过审查。 我应该使用什么查询?

在运行时连接到ruby中的两个不同的数据库

我在开发环境和生产环境中托管了一个数据库。 我正在编写一个API,它基于请求中的参数将写入开发或生产数据库中的表。 我把两个条目放在database.yml文件中: development: adapter: mysql2 database: db1 username: root password: timeout: 5000 host: abcd pool: 5 port: 1234 production: adapter: mysql2 database: db1 username: root password: timeout: 5000 host: abce pool: 5 port: 1234 这是我的积极记录: class table1 < ActiveRecord::Base self.table_name = 'table1' end 如何根据请求参数写入不同的环境?

Ruby Mysql2通过代理(QuotaGuard)

我需要使用mysql2 gem连接到mysql数据库。 一切都在本地运行良好,但在Heroku我需要一个静态IP地址,所以我安装了QuotaGuard ,它为我提供了用户名和密码的代理。 代理工作正常(用curl测试) 我无法使用它连接到mysql,我在post上看到你可以在连接时指定一个mysql套接字文件,但我完全不知道放在哪里,找不到任何地方。 client = Mysql2::Client.new(:host => host, :database => database, :username => username, :password => password, :port => port, :socket => “my_path/to/mysql.sock”) 我在my_path/to/mysql.sock随机尝试了这个,但它不会影响任何东西,就像它被忽略一样 route { proxy: xxxx:xxxxx@xxxxxx.quotaguard.com port: 9293 proxyprotocol: socks_v5 method: username command: connect } 谢谢

在Ruby Mysql查询中使用变量

我有一个名称存储在变量username并希望在我尝试时提取用户行信息 result = dbh.query(“SELECT * FROM maintab WHERE user = ‘#{username}'”) 我没有结果。 但是,如果我手动输入用户名,它会返回结果。 如何格式化我的查询以便我可以使用变量?

是的,另一个MySql:ERROR 1045(28000):拒绝访问用户’root’@’localhost’(使用密码:YES)

所以我不确定是什么原因造成我的MySql密码加密(升级到Mountain Lion,重新安装ruby / rails(其他问题),或者只是运气不好)但是我们在这里: 登录到mysql很好,但我无法登录到root Ayman$ mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 96 Server version: 5.5.25 MySQL Community Server (GPL) Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names […]