从rails中的两个表中获取数据?

时间:2014-04-04 06:13:02

标签: ruby-on-rails join foreign-keys

我有两张表emprequisition

emp.rb

 class Emp < ActiveRecord::Base

 has_many :requisitions 


 devise :database_authenticatable, :registerable,
     :recoverable, :rememberable, :trackable, :validatable,:confirmable,:lockable


     attr_accessor :email

     attr_accessible :password,:password_confirmation,:remember_me, :email , :username
     string_regex = /\A[a-z]+\z/i
     validates :username,
     :format => { :with => string_regex ,:message=> "must be string"},
      :uniqueness => {
:case_sensitive => false
}
end

Requisition

class Requisition < ActiveRecord::Base
belongs_to :emp

attr_accessible :name , :unit , :quantity ,:from ,:particular ,:total , :cost

validates :name , :unit , :quantity ,:from ,:particular ,:total , :cost , presence: true

 validates :particular, :presence => true,
          :length => { :within => 6..60 }

  validates :quantity, numericality: { only_integer: true },
          :length => {:maximum => 4}

  validates :quantity, numericality: { only_integer: true },
          :length => {:maximum => 4}

end

如果我想计算emp的申请数量,我应该做什么编辑?

在我的日志中

irb(main):002:0> @emp.requisitions.count
(1.0ms)  SELECT COUNT(*) FROM "requisitions" WHERE "requisitions"."emp_id" =$1  [[nil, 2]]
PG::UndefinedColumn: ERROR:  column requisitions.emp_id does not exist
LINE 1: SELECT COUNT(*) FROM "requisitions"  WHERE "requisitions"."e...: SELECT COUNT(*) FROM "requisitions"  WHERE "requisitions"."emp_id" = $1
ActiveRecord::StatementInvalid: PG::UndefinedColumn: ERROR:  column requisitions.emp_id does not exist
LINE 1: SELECT COUNT(*) FROM "requisitions"  WHERE "requisitions"."e...
                                               ^
: SELECT COUNT(*) FROM "requisitions"  WHERE "requisitions"."emp_id" = $1from  F:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/activerecord-4.0.0/lib/active_record/connection_adapters/postgresql_adapter.rb:811:in `prepare

1 个答案:

答案 0 :(得分:1)

首先,belongs_to关联名称应该是单数,所以你应该

belongs_to :emp

Requisition模型中。

您还应该生成将emp_id列添加到requisitions表的迁移:

bundle exec rails g migration add_emp_id_to_requisitions emp:references

并运行它:

bundle exec rake db:migrate

现在,假设您拥有empEmp个实例的变量,您可以通过以下方式对此emp requisition进行计数:

emp.requisitions.count