Tag: activerecord

如何在Rails之外的多环境中使用ActiveRecord?

我为单个环境创建了一个没有rails的数据库连接,它工作正常。 但是想为多种环境创建数据库配置(例如开发,生产,测试等) 单环境数据库连接代码(工作正常): require ‘mysql2’ require “active_record” # Using ActiveRecord ActiveRecord::Base.establish_connection( :adapter=> ‘mysql2’, :database=> ‘dev_db’, :username=> ‘root’, :password=>’root’ ) class Planning < ActiveRecord::Base end p Planning.find(1) 建议被接受……

升级到Rails 3.2.2:如何解决与Delayed Job gem相关的’未定义的Syck :: DomainType方法’错误?

我从3.1.0运行Ruby on Rails 3.2.2。 我有这个问题 undefined method send_register_email\’ for #\n//.rvm/gems/ruby-1.9.2-p290/gems/delayed_job-3.0.1/lib/delayed/performable_mailer.rb:6:in perform … 有许多其他人试图解决的DelayedJobgem:有人成功,其他人没有。 如果我尝试了我在网上找到的所有解决方案,那么我属于后一类。 这时,在我的Gemfile中,我有: gem ‘rails’, ‘3.2.2’ gem “rake” … gem ‘delayed_job_active_record’ … 在升级Rails之前,在我的Gemfile中我有: gem ‘rails’, ‘~> 3.1.0’ gem “rake” … # I also used the following statement by running Rails 3.2.2 but it didn’t work. gem ‘delayed_job’ … 为了发送电子邮件,在我的控制器中,我使用以下代码链接: ::Users::Mailer.delay.send_register_email(@user) 在我的APPLICATION_ROOT/app/mailers/users/mailer.rb文件中,我有: class Users::Mailer […]

Rails ActiveRecord – 有没有一种方法可以在没有id的表上执行操作?

我有一个一排两列的桌子 – int ‘version’, datetime ‘updated’ 是否有Rails ActiveRecord方法来获取和设置这些列中的数据? 没有id列。 我正在使用此表来跟踪其他表的查询版本。 在对另一个表的每次查询之后,版本列递增,并且使用当前日期时间设置更新的列。

Rails 5 db migration:如何修复ActiveRecord :: ConcurrentMigrationError

之前的rake db:rollback停滞不前。 现在,在尝试新迁移时,我们收到以下错误: rake aborted! ActiveRecord::ConcurrentMigrationError: Cannot run migrations because another migration process is currently running. /home/me/.rvm/gems/ruby-2.4.1@global/gems/activerecord- 5.1.4/lib/active_record/migration.rb:1315:in `with_advisory_lock’ /home/me/.rvm/gems/ruby-2.4.1@global/gems/activerecord-5.1.4/lib/active_record/migration.rb:1148:in `migrate’ /home/me/.rvm/gems/ruby-2.4.1@global/gems/activerecord-5.1.4/lib/active_record/migration.rb:1007:in `up’ /home/me/.rvm/gems/ruby-2.4.1@global/gems/activerecord-5.1.4/lib/active_record/migration.rb:985:in `migrate’ /home/me/.rvm/gems/ruby-2.4.1@global/gems/activerecord-5.1.4/lib/active_record/tasks/database_tasks.rb:171:in `migrate’ /home/me/.rvm/gems/ruby-2.4.1@global/gems/activerecord-5.1.4/lib/active_record/railties/databases.rake:58:in `block (2 levels) in ‘ /home/me/.rvm/gems/ruby-2.4.1/gems/rake-12.1.0/exe/rake:27:in `’ /home/me/.rvm/gems/ruby-2.4.1/bin/ruby_executable_hooks:15:in `eval’ /home/me/.rvm/gems/ruby-2.4.1/bin/ruby_executable_hooks:15:in `’ Tasks: TOP => db:migrate (See full trace by running task with –trace) 我们正在使用Postresql

best_in_place在rails 4中有多对多的关系

我已经制作了一个github回购,你可以在这里找到这个问题。 我有3个型号: class User { where(user_countries: {:event => true}) }, :through => :user_countries, :source => :country has_many :research_countries, -> { where(user_countries: {:research => true}) }, :through => :user_countries :source => :country end class UserCountry < ActiveRecord::Base belongs_to :country belongs_to :user end class Country < ActiveRecord::Base # … end 因此用户应该能够选择event_countries和research_countries。 这是我的用户控制器(没什么复杂的): class UsersController [:id, :name]) end […]

使用Rails,如何查询数据库以获取总数并按周分组?

给出一个像这样的表格: 日志: id, user_id, points, created_at 使用Rails,我如何通过user_id查询数据库,然后通过created_at逐周查询GROUPED,然后我可以使用以下内容: WEEK of X/XX/XXXX – 3011 total points WEEK of X/XX/XXXX – 320 total points WEEK of X/XX/XXXX – 31 total points WEEK of X/XX/XXXX – 30330 total points 谢谢

ActiveRecord ::带有急切加载的计算会进行多个数据库查询吗?

我的困惑源于这个问题 ,其中OP有一个类似的模型 class Quote < ActiveRecord::Base has_many :items def calc_price sum = 0 #logic for summation end end 在答案中,有几个人建议直接使用sum方法来计算属性的总和 def total_price items.sum(‘price’) end 如果我急于使用Quote.includes(:items).find(:all)加载数据,那么总和是在数据库结束时发生的,还是使用已经加载到内存中的对象? 如果它使用已在内存中加载的对象,则计算不会卸载到数据库。 它会使数据库查询两次,一次预加载,旁边总结价格吗? 将相同的逻辑扩展到所有ActiveRecord :: Calculations ,如果我进行count或average或其他此类方法,我是否每次都会访问我的数据库?

ActiveRecord并使用reject方法

我有一个模型可以从特定城市获取所有游戏。 当我得到那些游戏时,我想过滤它们,我想使用reject方法,但我遇到了一个我想要理解的错误。 # STEP 1 – Model class Matches < ActiveRecord::Base def self.total_losses(cities) reject{ |a| cities.include?(a.winner) }.count end end # STEP 2 – Controller @games = Matches.find_matches_by("Toronto") # GOOD! – Returns ActiveRecord::Relation # STEP 3 – View cities = ["Toronto", "NYC"] @games.total_losses(cities) # FAIL – undefined method reject for # # STEP 3 – View […]

如何在具有名为“attribute”的列的数据库上使用ActiveRecord? (DangerousAttributeError)

我正在访问一个我无法更改的数据库,它有一个名为attribute的列定义。 无论何时我尝试访问attribute ,我都会遇到以下exception: 属性? 由ActiveRecord定义(ActiveRecord :: DangerousAttributeError) 我的代码: class User username, :value => password).first end end 我找到了ruby on rails邮件列表上的一个计划来解决这个问题,但对我来说不起作用 class << self def instance_method_already_implemented?(method_name) return true if method_name == 'attribute' super end end 我不确定这是否重要,但这里是我的环境的详细信息: ruby 1.9.2p0(2010-08-18修订版29036)[x86_64-darwin10.4.0] 轨道 3.0.1 activerecord(3.0.1)activeresource(3.0.1) UPDATE(解决): 计划A: select(“username, value”).where(:username => username, :value => password).first

虚拟属性和批量分配

开发商! 我无法理解下一个情况 例如我有模型 class Pg::City < ActiveRecord::Base belongs_to :country #virtual accessors attr_accessor :population #attr_accessible :city, :isdisabled, :country_id end 我可以使用这样的代码: c = Pg::City.new({:population=>1000}) puts c.population 1000 但如果我取消注释上面的attr_accessible代码抛出警告 WARNING: Can’t mass-assign protected attributes: population 如何将虚拟属性与模型属性一起用于质量分配? 谢谢!