需要Activerecord的一些幫助在has_many:through關聯中查詢。Rails Activerecord查詢has_many:通過
型號:
工作
class Job < ActiveRecord::Base
has_many :job_metadata, :dependent => :destroy
has_many :metadata, :through => :job_metadata
元數據
class Metadatum < ActiveRecord::Base
attr_accessible :description, :metadata_type_id
has_one :metadatum_type
has_many :job_metadata, :dependent => :destroy
has_many :jobs, :through => :job_metadata
MetadatumType
class MetadatumType < ActiveRecord::Base
attr_accessible :description
has_many :metada
JobMetadatum
class JobMetadatum < ActiveRecord::Base
attr_accessible :job_id, :metadatum_id
belongs_to :job
belongs_to :metadatum
在控制檯中,我可以運行:
@job.metadata
返回
=> [#<Metadatum id: 2, description: "Part Time", metadatum_type_id: 1, created_at: "2012-06-23 20:42:14", updated_at: "2012-06-23 20:42:14">]
但我會怎麼回報@ jobs.metadata的metadatum_id其中有一個metadatum_type_id = 1?
我想這一點:
@job.metadata.metadatum_id.where('metadata.metadatum_type_id' => 1)
但得到以下錯誤:
NoMethodError: Metadatum Load (0.3ms) SELECT "metadata".* FROM
"metadata" INNER JOIN "job_metadata" ON "metadata"."id" =
"job_metadata"."metadatum_id" WHERE "job_metadata"."job_id" = 31
undefined method `metadatum_id'
for #<ActiveRecord::Relation:0x007f7fb3188de8>
約has_any最關鍵的事情:通過對實際獲得的型號名稱權開始。元數據和元數據非常非英語。我會首先想出更好的名字。我從經驗中學到了這一點。 –
謝謝邁克爾。鑑於我正在努力完成的任務,我很樂意爲這些模型命名。 – cman77