Question

I have two tables emp and requisition

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

If i want to count the number of requisition of emp what edit should i have to do?

In my log

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
Was it helpful?

Solution

First thing, belongs_to association name should be singular, so you should have

belongs_to :emp

in your Requisition model.

You should also generate migration adding emp_id column to requisitions table:

bundle exec rails g migration add_emp_id_to_requisitions emp:references

and run it:

bundle exec rake db:migrate

Now, given you have emp variable that holds Emp instance, you can count this emp's requisition by:

emp.requisitions.count
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top