【发布时间】:2016-07-12 22:56:49
【问题描述】:
我已经创建了 db 连接并在 .rb 文件中定义模型并尝试查找记录,仅使用 find 查询工作正常,但使用 find、conditions 查询不工作。
我的 .rb 文件:
require 'mysql2'
require "active_record"
ActiveRecord::Base.establish_connection(
:adapter=> 'mysql2',
:database=> 'qa_1705',
:username=> 'root',
:password=>''
)
class Company < ActiveRecord::Base
has_many :item_schema_attributes, :dependent => :destroy
has_many :schema_attributes, :dependent => :destroy
end
class SchemaAttribute < ActiveRecord::Base
belongs_to :company
has_many :item_schema_attributes, :dependent => :destroy
end
class ItemSchemaAttribute < ActiveRecord::Base
belongs_to :company
belongs_to :schema_attribute
belongs_to :line_item
end
#Works fine :
p Company.find(24)
#<Company id: 24, name: "ABC.pvt.ltd", address: "xyz">
#Not working, throws error:
p ItemSchemaAttribute.find(:first,:conditions => [ "schema_attribute_id = ?", 22])
Couldn't find all ItemSchemaAttributes with 'id': (first, {:conditions=>["schema_attribute_id = ?", 22]}) (found 0 results, but was looking for 2) (ActiveRecord::RecordNotFound)
完全错误:
/home/ac/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-4.2.1/lib/active_record/relation/finder_methods.rb:336:in `raise_record_not_found_exception!': Couldn't find all ItemSchemaAttributes with 'id': (first, {:conditions=>["schema_attribute_id = ?", 22]}) (found 0 results, but was looking for 2) (ActiveRecord::RecordNotFound)
from /home/ac/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-4.2.1/lib/active_record/relation/finder_methods.rb:479:in `find_some'
from /home/ac/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-4.2.1/lib/active_record/relation/finder_methods.rb:438:in `find_with_ids'
from /home/ac/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-4.2.1/lib/active_record/relation/finder_methods.rb:71:in `find'
from /home/ac/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-4.2.1/lib/active_record/querying.rb:3:in `find'
from /home/ac/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-4.2.1/lib/active_record/core.rb:128:in `find'
from connect_db_active_record2.rb:33:in `<main>'
我创建了具有相同结构的 Rails 应用程序,它在 Rails 控制台中运行良好,我还发现生成的错误从 ItemSchemaAttribute 转换为 ItemSchemaAttributes
【问题讨论】:
-
为什么不用
where而不是conditions? -
您使用的是哪个版本的 Rails?
-
我使用的是 Rails 2.3.18
-
但是你的activerecord是4.2.1!
标签: ruby-on-rails ruby activerecord