Tag: activerecord

Sidekiq没有找到Rails Active Job的记录

在模型中创建用户之后,作业将排队等待 user.rb after_create_commit :profile_photo_job def profile_photo_job message = “Add a profile photo” ReminderJob.set(wait: 1800).perform_later(self.id.to_s, message) end reminder_job.rb class ReminderJob < ApplicationJob queue_as :default def perform(user_id, message) if user_id user = User.find(user_id) end ##sending message notification here end end 但是,它经常在我的sidekiq控制台中抛出以下错误 ActiveRecord :: RecordNotFound:找不到’id’= 7749的用户处理器:User-MacBook-Pro.local:***** 生产中发生此错误。

Rails按关联数据排序

是否可以按教师的名字订购school.classrooms的结果? 我想直接在关联中执行此操作,而不是单独调用。 class School < ActiveRecord::Base has_many :classrooms end class Classroom < ActiveRecord::Base belongs_to :school belongs_to :teacher end class Teacher < ActiveRecord::Base has_one :classroom end

Rails中是否有一个DELETED表,就像在SQL Server中一样?

我需要能够在我的rails应用程序中执行相同的操作。 如您所见,在SQL Server中有一个名为DELETED的表,用于存储刚刚删除的行。 source: 如何在SQL Server中创建before delete触发器? CREATE TRIGGER TRG_AUD_DEL ON yourTable FOR DELETE AS INSERT INTO my_audit_table (col1, col2, …) SELECT col1, col2… FROM DELETED 将此逻辑应用于rails,是否有这样的表/位置来调用以获取这些行,就像在rails中删除它们一样? 我知道/ after_destroy之前的回调,但是如何访问被销毁的信息呢?

ActiveRecord:处理工人之间的DB比赛

我有一个运行在PostgreSQL 9.0之上的Rails 3项目。 使用案例:用户可以按名称请求关注Artists 。 为此,他们向REST资源提交名称列表。 如果我在本地集合中找不到名称的Artist ,请查阅last.fm以获取有关它们的信息,并在本地缓存该信息。 此过程可能需要一些时间,因此会将其委派给名为IndexArtistJob的后台作业。 问题 : IndexArtistJob将并行运行。 因此,两个用户可能同时请求添加相同的Artist 。 两个用户都应该将Artist添加到他们的集合中,但只有一个Artist应该在本地数据库中结束。 Artist模型的相关部分是: require ‘services/lastfm’ class Artist false def self.lookup(name) artist = Artist.find_by_name(name) return artist if not artist.nil? info = LastFM.get_artist_info(name) return if info.nil? # Check local DB again for corrected name. if name.downcase != info.name.downcase artist = Artist.find_by_name(info.name) return artist if […]

Rails添加错误:base不按预期工作

我有一个双嵌套forms: 当用户没有为user_item_image上传文件时,我需要显示错误消息。 我写了一个自定义validation: user_item_image.rb class UserItemImage < ActiveRecord::Base include PicturesHelper attr_accessor :foo mount_uploader :picture, PictureUploader belongs_to :user_item validate :picture_size validate :has_picture private def has_picture errors.add(:base, 'You must include at least one picture.') if picture.blank? end end 但我收到错误消息: 用户项目用户项目图像库您必须至少包含一张图片。 如何重写validation以使其不显示属性并仅显示消息。

ActiveRecord :: StatementInvalid:ArgumentError:负字符串大小(或大小太大):SELECT * FROM

我在尝试在内存中实例化太多对象时遇到此错误。 这是一个Rails 2.3.x应用程序,以SQL Server作为数据库。 >> Shop.count => 14111 >> Shop.all ActiveRecord::StatementInvalid: ArgumentError: negative string size (or size too big): SELECT * FROM [shop] from /Users/lunks/.rvm/gems/ree-1.8.7-2011.03@ums/gems/activerecord-2.3.14/ lib/active_record/connection_adapters/abstract_adapter.rb:227:in `log’ from /Users/lunks/.rvm/ gems/ree-1.8.7-2011.03@ums/gems/activerecord-sqlserver-adapter-2.3.24/lib/active_record/connection_adapters/sqlserver_adapter.rb:1004:in `raw_select’ from /Users/lunks/.rvm/gems/ree-1.8.7-2011.03@ ums/gems/activerecord-sqlserver-adapter-2.3.24/lib/active_record/connection_adapters/sqlserver_adapter.rb:965:in `select’ from /Users/lunks/.rvm/gems/ree-1. 8.7-2011.03@ums/gems/activerecord-2.3.14/lib/active_record/connection_adapters/abstract/database_statements.rb:7:in `select_all_without_query_cache’ from /Users/lunks/.rvm /gems/ree-1.8.7-2011.03@ums/gems/activerecord-2.3.14/lib/active_record/connection_adapters/abstract/query_cache.rb:62:in `select_all’ from /Users/lu nks/.rvm/gems/ree-1.8.7-2011.03@ums/gems/activerecord-2.3.14/lib/active_record/base.rb:665:in `find_by_sql’ from /Users/lunks/.rvm/gems/ree-1.8.7-2011.03@ums/gem s/activerecord-2.3.14/lib/active_record/base.rb:1582:in `find_every’ f rom /Users/lunks/.rvm/gems/ree-1.8.7-2011.03@ums/gems/activerecord-2.3.14/lib/active_record/base.rb:619:in `find’ […]

Ruby on Rails ActiveRecord数据库迁移失败

我有一个预先存在的sqlserver数据库’MyDatabase’填充了数据。 在这个数据库中,我有两个模式,’dbo’和’Master’。 dbo是默认架构并包含表: 所有者 地点 主模式包含表: 银行 区 表OWNER,LOCATION,BANK和ZONE包含多个属性。 我初始化了一个RoR服务器,并validation了安装了适当的gem(activerecord,tiny_tds,activerecord-sqlserver-adapter),以及database.yml中提供的正确信息,以便建立连接。 我~~能够连接到数据库。 我能够添加和删除表。 对我来说不寻常的是,当我运行rake db:migrate ,只有来自dbo架构的属性会在我的RoR服务器的schema.rb文件中自动初始化: ActiveRecord::Schema.define(:version => 20131014210258) do create_table “BANK”, :id => false, :force => true do |t| end create_table “LOCATION”, :id => false, :force => true do |t| t.string “VarA”, :limit => 50 t.string “VarB”, :limit => 50 t.decimal “VarC”, :precision => 28, […]

如何在n条件下在ActiveRecord中进行条件validation?

我正在提供一个由外部公司调用的Web服务。 所需的数据涵盖了几个模型,包括人员,地址等。我想根据请求中的某些字段有条件地validation接收的数据。 我最终会有许多不同的validation数据集,虽然目前我只有一个,我即将添加第二个。 我目前的模型看起来像这样 class Person 1..32, :allow_blank => true … … end 从概念上讲,我的模型现在需要做这样的事情。 class Person 1..32 else if company_name == ‘DEF’ validates_length_of :first_name, :within => 2..20 end else if country == ‘DE’ if company_name == ‘ABC’ validates_length_of :first_name, :within => 1..32 else if company_name == ‘DEF’ validates_length_of :first_name, :within => 2..20 end end end […]

在父母的孩子上搜索时,ActiveRecord不会返回

很想知道我正在做这个简单的错误… current_user = User.find(60) Plan.joins(:user).where(“users.id” => current_user.id).where(“plans.status” => nil) # Plan Load (8.6ms) SELECT “plans”.* FROM “plans” INNER JOIN “users” ON “users”.”id” = “plans”.”user_id” WHERE “users”.”id” = 60 AND “plans”.”status” IS NULL # => #<ActiveRecord::Relation [# # 不明白为什么第二个陈述没有找到计划..

在heroku上插入数据库错误但在本地工作,ActiveRecord :: StatementInvalid

我有2个型号: class User :destroy .. def add_post(post) self.micro_posts << post end class MicroPost < ActiveRecord::Base belongs_to :user … 和迁移: class CreateMicroPosts < <ActiveRecord::Migration def change create_table :micro_posts do |t| … 当我在heroku服务器上调用add_post时,我收到一个错误: 2012-02-06T02:59:58+00:00 app[web.1]: ActiveRecord::StatementInvalid (ArgumentError: wrong number of arguments (1 for 0): INSERT INTO “micro_posts” (“created_at”, “description”, “pub_date”, “tag”, “title”, “updated_at”, “url”, “user_id”) VALUES ($1, […]