-1

私のRuby on Railsプロジェクトのモデルでは、いくつかの定義があります。

class PlaySport < ActiveRecord::Base
  belongs_to :user
  belongs_to :sport

  def self.getLevel
  end  

  def self.check_play_sport(cuser_id,sport_id)
  end  

  def current_playing_sports
  end

  def all_played_sports
  end

end

この関係をこのようにキャッチします

current_user.play_sports.current_playing_sports

しかし、未定義のメソッドエラー「current_playing_sports」が表示されます

なにが問題ですか?

4

3 に答える 3

0

#current_playing_sportPlaySport モデルのインスタンスのメソッドです。current_user.play_sports(名前から判断すると) PlaySport インスタンスの配列を返します。したがって、それらを繰り返し処理して、それぞれを呼び出す必要があり#current_playing_sportます。

于 2012-10-13T03:45:40.413 に答える
0

play_sports はアソシエーションであるため、PlaySport モデル内で定義されたインスタンス メソッドを呼び出すことはできません。

play_sports はコレクションを返すので、 map などを使用してメソッドを呼び出すことができます

current_user.play_sports.map &:current_playing_sports

また、これは、各 PlaySport モデルの current_playing_sports メソッドの結果を持つ配列を返すことも忘れないでください。

于 2012-10-13T03:48:57.360 に答える
0

まず、play_sport オブジェクトの配列に対してメソッド current_playing_sports を呼び出そうとしています。

各 play_sport オブジェクトでメソッドを呼び出す必要があります。

何かのようなもの、

current_user.play_sports.collect(&:current_playing_sports)

私の疑問、

「current_playing_sport」というメソッドを定義し、「current_playing_sports」にアクセスしようとしています。タイプミスを修正する必要があると思います

has_many 関係を定義する必要があります。

モデルにこれを追加します。

has_many :current_playing_sports

これですべての問題が解決するはずです。

于 2012-10-13T04:12:59.963 に答える