0

私のコンソールでは、最初のユーザーを返す「user = Zip.find(30052).users.first」を実行しています。次に、コマンド「user.within_miles(25).count(:all)」を実行して、ユーザーから 25 マイル以内にいるすべての人を見つけられるようにします。これにより、「未定義のローカル変数またはメソッド「zip」」というエラーが発生します。

エラーは、「within_miles」の user.rb にメソッドが見つからないことを示しているようです。しかし、私はそれをそこで定義しています。

ユーザー.rb:

  scope :within_miles_of_zip, lambda{|radius, zip|
     # Get the parameters for the search
     area = zip.area_for(radius)

     { :select => "#{User.columns.map{|c| "users.#{c.name}"}.join(', ')}, sqrt( 
         pow(#{area[:lat_miles]} * (zips.lat - #{zip.lat}),2) + 
         pow(#{area[:lon_miles]} * (zips.lon - #{zip.lon}),2)) as distance",
       :joins => :zip,
       :conditions => "(zips.lat BETWEEN #{area[:min_lat]} AND #{area[:max_lat]}) 
         AND (zips.lon BETWEEN #{area[:min_lon]} AND #{area[:max_lon]}) 
         AND sqrt(pow(#{area[:lat_miles]} * (zips.lat - #{zip.lat}),2) + 
         pow(#{area[:lon_miles]} * (zips.lon - #{zip.lon}),2)) <= #{area[:radius]}",
       :order => "distance"}
   }

   def within_miles(radius)
     self.class.within_miles_of_zip(radius, zip)
   end
4

1 に答える 1

1

このコードでは:

def within_miles(radius)
  self.class.within_miles_of_zip(radius, zip)
end

zip が定義されていないため、エラーが発生しています。以下を追加することを検討する必要があります。

belongs_to :zip

ユーザークラスに。

于 2013-09-17T18:46:35.250 に答える