0

我的应用程序中有以下 3 个模型:

class Submission < ActiveRecord::Base
 has_many :linkedsubmissions
end

class Linkedsubmission < ActiveRecord::Base
  belongs_to :submission
  has_many   :lnksubtypes
end


class Lnksubtype < ActiveRecord::Base
  belongs_to :linkedsubmission
end

在下面的代码中 ' @submission.linkedsubmissions.lnksubtypes' 是不正确的。

@history = Audit.find(:all, :conditions => ["auditable_id IN (?)",@submission.linkedsubmissions.lnksubtypes.map{|b| b.LSU_ID} ])

我需要在@submission.linkedsubmissions.lnksubtypes 中找到所有带有“auditable_id”的审计

4

3 回答 3

1

您需要将以下has_many关系添加到您的Submission模型中。

class Submission < ActiveRecord::Base
 has_many :linkedsubmissions
 has_many :lnksubtypes, :through => :linkedsubmissions
end

现在,您将能够像这样重新格式化您的查询

@history = Audit.find(:all, :conditions => ["auditable_id IN (?)", @submission.lnksubtypes.map(&:LSU_ID) ])
于 2012-08-13T15:50:04.503 回答
1
Audit.find(:all, :conditions => ["auditable_id IN (?)",@submission.linkedsubmissions.map{|b| b.lnksubtypes.map{&:LSU_OID) }.flatten ])

但是应该有更好的方法来仅使用 sql 获取那些 LSU_OID。

于 2012-08-13T15:50:25.563 回答
1
@history = Audit.where(:auditable_id => @submission.lnksubtypes.map(&:LSU_ID))

略短

于 2012-08-13T16:58:20.477 回答