Rails拆分代码不起作用

我正在使用rails 2.3。 在我的应用程序中使用

val = Party.find(:all, :conditions => [" type in ('Physician') || id in (?)",PartyLabel.find(:all,:conditions=>"label_id=#{Label.find_by_label("Can Schedule").id}").collect{|p| p.party_id if Party.find(p.party_id).respond_to?("provider_organizations")}], :with_disabled => true).select{|physician| not physician.provider_organizations.blank? }.collect{|enum| [enum.display_name_schedule, enum.id]} 

代码实现一些要求。 现在我想将代码分成两部分。

 1. phys = Physician.find(:all, :include => :provider_organizations, :with_disabled => true).select{|physician| not physician.provider_organizations.blank? }.collect{|enum| [enum.display_name_schedule, enum.id]} 

它的工作正常..第二部分将是

 2. sch = Party.find(:all, :include => [:as_labels], :conditions => {:label => {:label => "Can Schedule"}}.respond_to?("provider_organizations")).select{|physician| not physician.provider_organizations.blank? }.collect{|enum| [enum.display_name_schedule, enum.id]} 

它显示NoMethodError (undefined method 'provider_organizations' for #):错误消息…任何评论都可以被欣赏..

看起来像为错误的对象调用respond_to?("provider_organizations") 。 这是你的代码#2:

 sch = Party.find( :all, :include => [:as_labels], :conditions => { :label => { :label => "Can Schedule" } }.respond_to?("provider_organizations") # What's this ??? ).select{ |physician| not physician.provider_organizations.blank? }.collect{ |enum| [enum.display_name_schedule, enum.id] } 

如果我理解正确,那就是respond_to? 应该在select

 ... ).select{ |physician| physician.respond_to?("provider_organizations") && not physician.provider_organizations.blank? }.collect{ ...