我的应用程序中有以下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'的所有审核答案 0 :(得分: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) ])
答案 1 :(得分:1)
Audit.find(:all, :conditions => ["auditable_id IN (?)",@submission.linkedsubmissions.map{|b| b.lnksubtypes.map{&:LSU_OID) }.flatten ])
但是应该有一种更好的方法来使用sql获取那些LSU_OID。
答案 2 :(得分:1)
@history = Audit.where(:auditable_id => @submission.lnksubtypes.map(&:LSU_ID))
略短