标签: activerecord

没有数据库的Rails模型

我想用ActiveRecord验证创建一个Rails(2.1和2.2)模型,但没有数据库表.什么是最广泛使用的方法?我发现一些声称提供此功能的插件,但其中许多插件似乎没有得到广泛使用或维护.社区推荐我做什么?现在我倾向于根据这篇博文提出我自己的解决方案.

ruby activerecord ruby-on-rails

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

有没有办法避免自动更新Rails时间戳字段?

如果您有DB列created_at,updated_atRails将在您创建和更新模型对象时自动设置这些值.有没有办法保存模型而不触及那些列?

我正在引入一些遗留数据,我想从(不同命名的)遗留数据字段中的相应值设置这些值.我发现当我在模型上设置然后保存模型时,Rails似乎会覆盖传入的值.

当然,我可以不同地命名Rails模型列以防止这种情况,但是在导入数据之后,我希望Rails执行其自动时间戳操作.

ruby activerecord timestamp ruby-on-rails

66
推荐指数
5
解决办法
3万
查看次数

ActiveRecord在日期字段上按年,日或月查找

我有一个具有日期属性的ActiveRecord模型.是否可以使用该日期属性按年,日和月查找:

Model.find_by_year(2012)
Model.find_by_month(12)
Model.find_by_day(1)
Run Code Online (Sandbox Code Playgroud)

或者只是可以find_by_date(2012-12-1).

我希望我可以避免创建年,月和日属性.

activerecord ruby-on-rails ruby-on-rails-3 rails-activerecord

66
推荐指数
7
解决办法
5万
查看次数

Ruby Activerecord IN子句

我想知道是否有人知道如何在activerecord中执行"IN"子句.不幸的是,"IN"条款几乎是不可谷歌的,所以我必须在这里发布.基本上我想回答这样一个问题"给我这些宿舍id在这个阵列中的所有大学生[id array]".我知道如何在给出一个单独的宿舍ID的情况下编写查询,但我不知道如何在给定一组id的情况下执行此操作.

任何帮助是极大的赞赏.我确定这是某个问题的重新发布,所以一旦找到答案/更好的搜索词,我就会删除它.

ruby activerecord

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

获取ActiveRecord对象中的属性类型

我想知道是否有可能以编程方式获取类型(如AR所知 - 例如在迁移脚本和数据库中)(我知道数据存在于某处).

例如,我可以处理所有属性名称:

ar.attribute_names.each { |name| puts name }
Run Code Online (Sandbox Code Playgroud)

.attributes只返回名称到其当前值的映射(例如,如果未设置字段,则不返回类型信息).

我在一些地方看到了类型信息:

在脚本/控制台中,键入AR实体的名称:

>> Driver
=> Driver(id: integer, name: string, created_at: datetime, updated_at: datetime)
Run Code Online (Sandbox Code Playgroud)

很明显它知道类型.此外,还有.column_for_attribute,它接受一个attr名称并返回一个列对象 - 其类型隐藏在底层数据库列对象中,但它似乎不是一种干净的方式来获取它.

我也感兴趣的是,如果有一种方式对新的"ActiveModel"来说是友好的(rails3)并且与数据库细节分离(但也许类型信息不会是它的一部分,我似乎无法找出它是否是).

谢谢.

ruby activerecord ruby-on-rails activemodel

65
推荐指数
6
解决办法
4万
查看次数

Rails中列名的别名

在我的数据库中有列名,如'delete'或'listen-control'等.这些不能更改,所以我想为名称添加别名,以避免我的应用程序出现问题.

我发现以下代码但它已过时(2005年8月5日)并且不适用于Rails 3:

module Legacy
  def self.append_features(base)
    super
    base.extend(ClassMethods)
  end
  module ClassMethods
    def alias_column(options)
      options.each do |new_name, old_name|
        self.send(:define_method, new_name) { self.send(old_name) }
        self.send(:define_method, "#{new_name}=") { |value| self.send("#{old_name}=", value) }
      end
    end
  end
end

ActiveRecord::Base.class_eval do
  include Legacy
end
Run Code Online (Sandbox Code Playgroud)

我如何为列名称添加别名?可能吗?

database activerecord ruby-on-rails ruby-on-rails-3

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

如何计算ROR中特定字段中具有唯一值的记录数?

我有一个包含日期字段的记录集,并希望确定记录集中表示的唯一日期数.

就像是:

Record.find(:all).date.unique.count 
Run Code Online (Sandbox Code Playgroud)

但当然,这似乎不起作用.

ruby activerecord ruby-on-rails

64
推荐指数
6
解决办法
8万
查看次数

CodeIgniter Active Record - 获取返回的行数

我对CodeIgniter和Active Record非常陌生,我知道如何在普通的SQL中做得很好,但我正在努力学习.

如何从我的某个表中选择一些数据,然后使用CodeIgniters Active Record类计算返回的行数?

谢谢,汤姆.

activerecord codeigniter

64
推荐指数
5
解决办法
18万
查看次数

MongoDB与MySQL

我曾经用MySQL构建Ruby on Rails应用程序.

MongoDB目前越来越有名,我现在开始试一试.

问题是,我不知道MongoDB如何工作的基础理论(如果重要的话,我正在使用mongoid gem)

所以我想对使用MySQL + ActiveRecord和mongoid gem生成的模型之间的性能进行比较,是否有人可以帮我搞清楚?

mysql comparison activerecord mongodb ruby-on-rails-3

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

ActiveRecord find_each结合限制和顺序

我正在尝试使用ActiveRecord的find_each方法运行大约50,000条记录的查询,但它似乎忽略了我的其他参数,如下所示:

Thing.active.order("created_at DESC").limit(50000).find_each {|t| puts t.id }
Run Code Online (Sandbox Code Playgroud)

而不是停留在50,000我喜欢和排序created_at,这是在整个数据集上执行的结果查询:

Thing Load (198.8ms)  SELECT "things".* FROM "things" WHERE "things"."active" = 't' AND ("things"."id" > 373343) ORDER BY "things"."id" ASC LIMIT 1000
Run Code Online (Sandbox Code Playgroud)

有没有办法获得类似的行为,find_each但总的最大限制和尊重我的排序标准?

sql activerecord ruby-on-rails

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