モデル内の現在のオブジェクトを取得できるかどうか疑問に思っていましたか?つまり、私は
FavoriteRelationshipモデル
belongs_to :user
belongs_to :lesson
私のレッスンモデルは
has_many :favorite_relationships
has_many :users, :through => :favorite_relationships
ユーザーモデルとも関連付けられています(重要ではありません)
私のFavoriteRelationship内でメソッドを実行しようとしています
def lesson_owner
self.lesson.user
end
FavoriteRelationshipでそのレッスンに属するユーザーを取得しますが、機能していないようです。私がやっても何も返さない
self.lesson.inspect
FavoriteRelationshipモデルにあるレッスンでさえ取得することは機能していません。誰かがこれを行う方法に光を当てることができますか?
私は基本的に、FavoriteRelationshipモデルに関連するレッスンが必要です。私のFavoriteRelationshipテーブルには、属性があります。
:id, :user_id, :lesson_id.
:lesson_idは、取得しようとしている値である必要があります。これにより、後でユーザーを取得できます。
あなたの助けと時間をありがとう
@アップデート。
したがって、基本的に、ユーザーが他の誰かのレッスンをお気に入りに追加したときに「バッジ」を付与しようとすることを使用しています。私は持っています..
def create
@lesson = Lesson.find(params[:favorite_relationship][:lesson_id])
puts 'before favorite'
current_user.favorite!(@lesson)
puts 'after favorite'
@favorite_relationship = @lesson.user
respond_to do |format|
format.html { redirect_to @lesson }
format.js
end
end
私のバッジの付与は...
grant_on 'favorite_relationships#create', :badge => 'got-favorited',
:to => :lesson_owner
これは、誰に許可するかを返すメソッドを取ります。そのため、私はそのメソッドを作成しました。
私がする時
puts self.lesson.inspect
何も出てこない、ゼロでも何でもない。私の好みが機能することを知っています、それはデータベースに関係を作成します。私が考えた唯一のことは、関係が作成される前にバッジを付与しようとすることです。うーん...私はprintステートメントを入れましたが、create_favorite_relationshipが呼び出されて戻った後、lesson_ownerに入ったようです。多分それはまだデータベースに作成されていませんか?ミリ秒が速すぎるように?優先は非同期で行われます。
さらにいくつかの関連付けを設定する必要がありますか?