我想用ActiveRecord验证创建一个Rails(2.1和2.2)模型,但没有数据库表.什么是最广泛使用的方法?我发现一些声称提供此功能的插件,但其中许多插件似乎没有得到广泛使用或维护.社区推荐我做什么?现在我倾向于根据这篇博文提出我自己的解决方案.
如果您有DB列created_at,updated_atRails将在您创建和更新模型对象时自动设置这些值.有没有办法保存模型而不触及那些列?
我正在引入一些遗留数据,我想从(不同命名的)遗留数据字段中的相应值设置这些值.我发现当我在模型上设置然后保存模型时,Rails似乎会覆盖传入的值.
当然,我可以不同地命名Rails模型列以防止这种情况,但是在导入数据之后,我希望Rails执行其自动时间戳操作.
我有一个具有日期属性的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
我想知道是否有人知道如何在activerecord中执行"IN"子句.不幸的是,"IN"条款几乎是不可谷歌的,所以我必须在这里发布.基本上我想回答这样一个问题"给我这些宿舍id在这个阵列中的所有大学生[id array]".我知道如何在给出一个单独的宿舍ID的情况下编写查询,但我不知道如何在给定一组id的情况下执行此操作.
任何帮助是极大的赞赏.我确定这是某个问题的重新发布,所以一旦找到答案/更好的搜索词,我就会删除它.
我想知道是否有可能以编程方式获取类型(如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)并且与数据库细节分离(但也许类型信息不会是它的一部分,我似乎无法找出它是否是).
谢谢.
在我的数据库中有列名,如'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)
我如何为列名称添加别名?可能吗?
我有一个包含日期字段的记录集,并希望确定记录集中表示的唯一日期数.
就像是:
Record.find(:all).date.unique.count
Run Code Online (Sandbox Code Playgroud)
但当然,这似乎不起作用.
我对CodeIgniter和Active Record非常陌生,我知道如何在普通的SQL中做得很好,但我正在努力学习.
如何从我的某个表中选择一些数据,然后使用CodeIgniters Active Record类计算返回的行数?
谢谢,汤姆.
我曾经用MySQL构建Ruby on Rails应用程序.
MongoDB目前越来越有名,我现在开始试一试.
问题是,我不知道MongoDB如何工作的基础理论(如果重要的话,我正在使用mongoid gem)
所以我想对使用MySQL + ActiveRecord和mongoid gem生成的模型之间的性能进行比较,是否有人可以帮我搞清楚?
我正在尝试使用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但总的最大限制和尊重我的排序标准?
activerecord ×10
ruby ×5
activemodel ×1
codeigniter ×1
comparison ×1
database ×1
mongodb ×1
mysql ×1
sql ×1
timestamp ×1