我有两张表emp
和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
如果我想计算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
答案 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
现在,假设您拥有emp
个Emp
个实例的变量,您可以通过以下方式对此emp
requisition
进行计数:
emp.requisitions.count