Tag: activerecord

选择* sql query vs选择特定列sql查询

可能重复: 为什么SELECT *被认为有害? 可能是一个数据库nOOb问题。 我们的应用程序有如下表格 表WF Field | Type | Null | Key | Default | Extra | +——————–+————-+——+—–+———+—————-+ | id | int(11) | NO | PRI | NULL | auto_increment | | children | text | YES | | NULL | | | w_id | int(11) | YES | | NULL | | | […]

通过活动记录查询在组中的最大值

我有一个具有两个属性的模型(我只显示两个属性,因为只需要这两个列) 为MyModel place_id ———————— user_id 1 ———————————- 1 1 ———————————- 2 1 ———————————- 2 3 ———————————- 3 3 ———————————- 2 3 ———————————- 3 3 ———————————- 1 我想通过最大记录来获取组。 基本上我想要获取用户具有最大记录的特定位置,例如对于place_id 1,用户2具有最大结果,而对于地点3,用户3具有最大结果。

将默认ActiveRecord id从0更改为1000000

我想将创建对象的id的最小值从1更改为1000.因此,当我在rails中创建第一个模型对象时,它获取ID 1000而不是1。 有没有办法在架构/迁移文件中设置它?

ActiveRecord:如何找到所有孩子符合条件的父母?

假设我有一个包含许多Child的Parent模型,那个Child也属于OtherParent 。 我怎样才能找到所有其Child所有Child属于任何其他OtherParent ? 在纯SQL中我能做到 Parent.find_by_sql(<<SQL) SELECT * FROM parents p WHERE NOT EXISTS ( SELECT * FROM children WHERE parent_id = p.id AND other_parent_id IS NULL ) SQL (从这里开始 ),但如果可能的话,我更愿意利用ActiveRecord。 谢谢! 我正在使用Rails 4.2.1和PostgreSQL 9.3

范围内的find_by正在触发2个查询

我正在使用Rails 4.2.3和ruby 2.2.1 我在角色模型中写了一个范围如下: 应用程序/模型/ role.rb scope :default, -> { find_by(default: true) } 现在我跑的时候 > Role.default #this is the output I got. Role Load (0.1ms) SELECT `roles`.* FROM `roles` WHERE `roles`.`default` = 1 LIMIT 1 Role Load (0.1ms) SELECT `roles`.* FROM `roles` => [] 正如您所看到的,这会触发2个查询并返回错误的结果。 我尝试使用类方法而不是范围 def self.default self.find_by(default: true) end 现在我跑的时候 Role.default #this is […]

从ActiveRecord查询返回类型

如果我要从ActiveRecord调用中获取Relation,Array或其他类型的内容,会让我知道什么? 我知道我可以在控制台中键入.class并弄清楚,但是调用本身有什么能让我知道我要的是什么吗?

一个has_many Bs,其中B没有主键

我有模特A和B; a has_many B,B属于A A.到目前为止,很好 – 除了,我指定B没有主键。 我不打算修改或删除单独的B行,并且我希望它们有数百万到数十亿,所以省略主键将非常方便,在空间方面。 创建B表的迁移如下所示: class CreateBs false} do |t| # … rest of fields … end end end 不幸的是,ActiveRecord不同意; 试图创建A(这是正确的!)导致: 1.9.3p194 :001 > A.create! (0.3ms) BEGIN (0.1ms) ROLLBACK ActiveRecord::UnknownPrimaryKey: ActiveRecord::UnknownPrimaryKey from /Users/annelicuss/.rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.8/lib/active_record/reflection.rb:366:in `primary_key’ from /Users/annelicuss/.rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.8/lib/active_record/reflection.rb:216:in `association_primary_key’ from /Users/annelicuss/.rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.8/lib/active_record/associations/has_many_association.rb:104:in `foreign_key_present?’ from /Users/annelicuss/.rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.8/lib/active_record/associations/association.rb:165:in `find_target?’ from /Users/annelicuss/.rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.8/lib/active_record/associations/collection_association.rb:332:in `load_target’ from /Users/annelicuss/.rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.8/lib/active_record/associations/collection_proxy.rb:44:in `load_target’ … 如果您捕获exception,则其message指出: […]

has_many关系的每个最后元素的范围

假设我在User和Messages之间有一个has_many关系。 我想设置一个范围,以便能够通过他们发布的最后一条消息中的内容过滤用户。 所以只搜索每个用户的最后一条消息。 下面我得到了所有消息中的结果…… class Contact < ActiveRecord::Base has_many :messages scope :filter_by_last_messages, lambda { |value| joins(:messages).where("messages.content = ?", value) } end

ruby(1.9.3)on rails(3.2.3)Activerecord-odbc-adapter

我有一个遗留数据库(Progress OpenEdge),我需要用它来处理无数的报告。 我使用ruby 1.8.6和rails 2.0(odbc-adapter和odbc-rails)。 由于不再支持1.8.6而且rails 2.0已经很老了,我想更新。 3.2.3上是否支持odbc-adapter? 任何输入都表示赞赏。 谢谢,

在db中没有相应列的rails模型属性

我有一些不需要任何持久性的rails模型,但我想rails认为模型实际上有属性x,y,z所以当在控制器中调用类似to_json的方法时我会免费获得它们。 例如, class ModelWithoutTableColumns << ActiveRecord::Base def x return "Custom stuff here" end Table“ModelWithoutTable”的数据库中没有列x(对于稍微有点混乱的名称感到抱歉!) 任何人都知道如何解决这个问题?