标签: activerecord

如何在具有活动记录的rails中使用两个不同的数据库?

我需要在不同的Rails模型中使用不同的数据库连接.是不是有一种不那么黑的方式呢?

任何链接或搜索关键字都会很棒:)

ruby activerecord ruby-on-rails

43
推荐指数
4
解决办法
2万
查看次数

codeigniter:在两个日期之间发布数据

如何通过使用codeigniter的activerecord查询两个日期之间的记录来从数据库中检索数据?

谢谢

php sql activerecord codeigniter

43
推荐指数
5
解决办法
13万
查看次数

你可以使用activerecord来查找字段的子字符串吗?(快速和脏的关键字查找器)

假设一个数据库包含一个字段'关键字',样本记录包括:"管扳手""猴子扳手""新月扳手""新月形卷""猴子栏"

有没有办法在activerecord中找到关键字字段包含子串"crescent"的记录?

(这只是对快速概念原型的快速而肮脏的查找)

activerecord ruby-on-rails

43
推荐指数
3
解决办法
4万
查看次数

只获取今天在laravel中创建的记录

如何使用该created_at字段仅获取今天创建的记录,而不是其他日期或时间?

我在想一个->where('created_at', '>=', Carbon::now())但是我不确定它会起作用.

mysql activerecord date where laravel-5.1

43
推荐指数
6
解决办法
7万
查看次数

Ruby on Rails:如何从显示的子资源中获取错误消息?

我很难理解如何让Rails为渲染XML模板时验证失败的子资源显示明确的错误消息.假设我有以下几个类:

class School < ActiveRecord::Base
    has_many :students
    validates_associated :students

    def self.add_student(bad_email)
      s = Student.new(bad_email)
      students << s
    end
end

class Student < ActiveRecord::Base
    belongs_to :school
    validates_format_of :email,
                  :with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i,
                  :message => "You must supply a valid email"
end
Run Code Online (Sandbox Code Playgroud)

现在,在控制器中,假设我们想构建一个简单的API,允许我们在其中添加一个带有学生的新学校(再次,我说,这是一个可怕的例子,但为了问题的目的发挥作用)

class SchoolsController < ApplicationController
    def create
      @school = School.new
      @school.add_student(params[:bad_email])
      respond_to do |format|
          if @school.save
          # some code
          else
            format.xml  { render :xml => @school.errors, :status => :unprocessable_entity }
          end
      end
    end
end
Run Code Online (Sandbox Code Playgroud)

现在验证工作正常,因为电子邮件与Student类中的validates_format_of方法中设置的正则表达不匹配而死亡.但是我得到的输出如下:

<?xml version="1.0" encoding="UTF-8"?>
<errors>
  <error>Students is …
Run Code Online (Sandbox Code Playgroud)

ruby rest activerecord ruby-on-rails

42
推荐指数
3
解决办法
2万
查看次数

如何覆盖:has_many中定义的顺序

我有

class Authors 
has_many :books, :order => 'name ASC'
Run Code Online (Sandbox Code Playgroud)

我试图查询按名称DESC排序的所有书籍

Authors.books.order('name DESC')
Run Code Online (Sandbox Code Playgroud)

但结果是

SELECT * FROM .... ORDER BY name ASC, name DESC
Run Code Online (Sandbox Code Playgroud)

结果以名称排序ASC返回

有没有办法删除关联中的原始订单或覆盖它?或者在关系中指定一个坏主意的订单?

使用Rails 3.0.3

activerecord ruby-on-rails arel

42
推荐指数
2
解决办法
1万
查看次数

如何在需要回调时更新所有内容?

假设我在一个名为的数组中有15个用户id user_ids.

如果我想,比如说,将他们所有的名字改为"Bob",我可以这样做:

users = User.find(user_ids)
users.update_all( :name => 'Bob' )
Run Code Online (Sandbox Code Playgroud)

但是,这不会触发回调.如果我需要触发对这些记录保存的回调,据我所知,唯一的方法是使用:

users = User.find(user_ids)
users.each do |u|
  u.name = 'Bob'
  u.save
end
Run Code Online (Sandbox Code Playgroud)

但是,这可能意味着在控制器操作中执行非常长时间的任务.

所以,我的问题是,是否还有其他更好/更高性能/更多的方式来触发批量更新到一组记录,这些记录触发记录的回调?

activerecord ruby-on-rails callback ruby-on-rails-3 update-all

42
推荐指数
3
解决办法
2万
查看次数

42
推荐指数
2
解决办法
5万
查看次数

非持久性ActiveRecord模型属性

我想向现有模型添加一些不需要持久化的属性,甚至是映射到数据库列的属性.是否有解决方案来指定这样的事情?

activerecord ruby-on-rails

42
推荐指数
3
解决办法
2万
查看次数

Rails:将activerecord关系转换为数组的正确方法?

我试图用一个属性选择对象uniq @videos.uniq{|p| p.author}

  time = Time.new(2014, 12)
  start_time = time.beginning_of_month
  end_time = time.end_of_month

  videos = Video.where("created_at > ? AND created_at < ?", start_time, end_time).where("likes > ?", 15)
  selected_videos = videos.uniq{|p| p.author}
  puts videos.count, videos.class, selected_videos.count 
 #=> 23, Video::ActiveRecord_Relation, 23

  videos_first = videos.first(23)
  selected_videos = videos_first.uniq{|p| p.author}
  puts videos_first.count, videos_first.class, selected_videos.count
  #=> 23, array, 10
Run Code Online (Sandbox Code Playgroud)

.uniq不适合ActiveRecord_Relation.问题是查询返回一个Video::ActiveRecord_Relation,但我需要array.

当然,这可以通过使用来实现to_a,但这是优雅吗?

  1. 处理这个问题的正确方法是什么?
  2. 是可以使用.uniqactiverecord:relation

activerecord ruby-on-rails

42
推荐指数
1
解决办法
4万
查看次数