Tag: activerecord

在Rails中的一个ActiveRecord事务中更新多个记录

如何使用Rails中的事务块一次更新/保存模型的多个实例? 我想更新数百条记录的值; 每条记录的值都不同。 这不是一个属性的批量更新情况。 Model.update_all(attr:value)在这里不合适。 MyModel.transaction do things_to_update.each do |thing| thing.score = rand(100) + rand(100) thing.save end end save似乎发布了它自己的事务,而不是将更新批处理到周围的事务中。 我希望所有更新都进入一次重大交易。 我怎么能做到这一点?

ActiveRecord :: Base的未定义方法#sanitize

我刚刚升级到Rails 5.1.1并收到此错误。 NoMethodError (undefined method `sanitize’ for ActiveRecord::Base:Class): 堆栈追溯到此代码 like_search_term = ActiveRecord::Base::sanitize(“%#{escaped_search_term}%”) 是否已在新的Rails升级中删除或更改此方法?

ActiveRecord has_many其中表A中的两列是表B中的主键

我有一个模型, Couple ,它有两列, first_person_id和second_person_id ,另一个模型是Person ,其主键是person_id并且具有列name 这是我想要的用法: #including ‘Person’ model for eager loading, this is crucial for me c = Couple.find(:all, :include => :persons)[0] puts “#{c.first_person.name} and #{c.second_person.name}” 那我该怎么做呢?

为什么Rails中的ActiveRecord不支持多表inheritance?

我试图实现一组我在纸上放在一起的模型并遇到了一个问题,我认为最好的方法就是使用多表inheritance设置。 然而,谷歌搜索后我发现ActiveRecord不支持MTI ……尽管有很多文章显示它是如何完成的。 这让我想知道如果没有实现我是否正确设置我的模型。 所以我的问题是为什么Active Record没有内置支持MTI? 如果你对我的模型设置“看起来像”我感到好奇,我会把它留在下面。 class Player < ActiveRecord::Base; end class CollegePlayer < Player; end class ProPlayer < Player; end Player可以是CollegePlayer和ProPlayer中的任何一个或两个。 或者在另一个例子中…… class Person < ActiveRecord::Base; end class User < Person; end class Player < Person; end class Coach < Person; end “人”可以是User , 前任 Player和/或Coach 。

如何使用em_mysql2解决’连接仍在等待结果’错误

我在Goliath(eventmachine)下使用em_mysql2的activerecord。 我的用户模型发生了最奇怪的事情。 当我第一次对/ users进行POST时,它只能按预期找到。 当我做第二次POST时,我收到错误。 Mysql2::Error: This connection is still waiting for a result, try again once you have the result: INSERT INTO `users` (… and so on …) 对于我的任何其他模型或路线,都不会发生这种情况。 我假设如果数据库连接处于混乱状态,我会在其他请求上看到相同的错误但是没有 – 所有其他数据库更新和GET请求似乎都可以正常工作。 有谁知道这只会发生在我的用户模型和仅用于User.save操作的情况下? 活动记录是否以某种方式存储它用于执行Model.save的数据库连接并重新使用它? 编辑: 当我写这个问题时我不知道提到我使用ActiveRecord作为ORM。 我也没有提到我异步向Mongo数据库发送请求以获取用户身份validation信息。 我的解决方案 事实certificate,这个错误发生的唯一时间是来自Mongo的响应在MySQL的响应之前回来,这导致MySQL响应被不同的光纤拾取而不是发出请求的光纤。 由于我使用的MySQL2光纤实现使用光纤的objectID来管理连接,这似乎导致了这个问题。 ActiveRecord + MySql2 + Fibers + Goliath中的整体连接池不是完全支持的配置。 (从那时起可能会有一些进展)

从Rails 3.0.3中的URL正确地替换特殊字符

我正在使用Rails 3.0.3和REE(Ruby 1.8.7)和gem’mysql2’,’0.2.6′ 我的项目中有一个搜索function,可以让人们使用URL或使用表单来使用GET方法,然后生成URL。 例: 我想搜索: 起源城市:“ Århus,丹麦 ”和目的地城市:“ Asunción,Paraguay ” 它们都有一个特殊的字符:“ Å ”和“ ó ”,所以当有人点击搜索按钮时,会生成这样的URL。 ?&origin=%C5rhus%2C%20Denmark&destination=Asunci%F3n%2C%20Paraguay 问题: 当我搜索那个城市时,它并没有像我想要的那样(我尝试使用像CGI,URI,甚至一些gem)。 当我在控制台看到时,ActiveRecord收到了这样的查询: Parameters: {“destination”=>”Asunci n, Paraguay”, “origin”=>” rhus, Denmark”, “sort”=>”newest”} City Load (0.1ms) SELECT `cities`.* FROM `cities` WHERE (`cities`.`name` = ‘ rhus’) ORDER BY cities.name ASC City Load (6.8ms) SELECT `cities`.* FROM `cities` WHERE (`cities`.`name` = ‘Asunci […]

Rails 3使用自定义属性/方法response_to json

在rails应用程序中,我有一个动作,返回不同模型集合的json表示。 它看起来像这样: respond_to :json def index @cars = Car.all @vans = Van.all respond_with({ :cars => @cars, :vans => @vans }) end 但是,我想自定义传递给json对象的属性和方法。 有一点像: respond_with({ :cars => @cars.to_json(:only => [:make, :model], :methods => [:full_name]), :vans => @vans }) 执行上述操作后,会将“cars”的json表示转义为一个大字符串,如: { “cars”:”[{\”car\”:{\”make\”:\”Ford\” … etc “vans”: [{“van”:{“make”:”Citreon” … vans not escaped } 显然我正以错误的方式接近这一点。 谁能指出我正确的方向?

自我指导has_many:通过自定义:主键问题

我试图在我的Rails 2.3.8应用程序(ruby 1.8.7)中模拟twitter模型 class Connection ‘subject_id’, :primary_key => ‘user_id’, :class_name => ‘User’ belongs_to :follower, :foreign_key => ‘follower_id’, :primary_key => ‘user_id’, :class_name => ‘User’ end class User ‘user_id’, :foreign_key => ‘follower_id’, :class_name => ‘Connection’ has_many :relations_from, :primary_key => ‘user_id’, :foreign_key => ‘subject_id’, :class_name => ‘Connection’ has_many :linked_from, :through => :relations_from, :source => :subject, :primary_key => ‘user_id’ […]

ActiveRecord :: StatementInvalid:Mysql2 :: Error:无法删除或更新父行–Rails 4.2.6

需要解决的错误: ActiveRecord :: StatementInvalid:Mysql2 :: Error:无法删除或更新父行:外键约束失败( slap_chat_development ,CONSTRAINT fk_rails_496733c195 FOREIGN KEY( group_id )REFERENCES groups ( id )):DELETE FROM groups WHERE groups 。 id = 1 问题是: 有人可以指导我从哪里修复此错误。 我看到问题在groups和chatrooms表之间的关系中持续存在。 更多详情: schema.rb ActiveRecord::Schema.define(version: 20160606100750) do create_table “chatrooms”, force: :cascade do |t| t.integer “group_id”, limit: 4 t.string “name”, limit: 255 t.datetime “created_at”, null: false t.datetime “updated_at”, null: false […]

rails //在白天按时区查询

在使用时区时,并没有那么自信,在这个问题上寻求帮助 我有一个cron作业,偶尔检查用户,这称为rake任务。 在此rake任务中,我查询用户并根据条件发送每个电子邮件。 我有每个用户的时区信息。 我想对那些只返回当前白天用户的用户进行查询 如何实现这一目标? 最好