0

現在、authlogicを追加した6モデルのRuby on Railsアプリケーションがあります。全体の構成は、

User :has_many categories, topics,messages
Categories has_many topics,
Topics has_many messages 

(および対応する反対の belongs_to リンクあり)。

current_user.categories.find(2) にアクセスしようとすると、コントローラーに結果が返されません。

さらに、これを実行しようとすると

current_user.topics.find(params[:topic_id]).messages.build

それで、

@msg = current_user.messages.build(params[:message])
@msg.save

has_many から user_id を保存しません。

current_user ディレクティブが追加される前は、このプログラムのすべての機能が機能していました。

設定を間違えていますか?それとも実行で?

ビルド後に関連付けが保存されないため、後でモデルに user_id フィールドを追加できますか?

質問ばかりで申し訳ありませんが、よろしくお願いします。

4

2 に答える 2

1

私はあなたの最善の策は段階的に進むことだと思います。current_userは何を返しますか?そのユーザーのIDはデータベース内のIDと一致しますか?そのユーザーにはカテゴリがありますか?それらのいずれかが2のIDを持っていますか?

連鎖呼び出しで問題を単一のレイヤーに分離できれば、デバッグがはるかに簡単になります。

于 2009-10-07T22:05:35.693 に答える
0

ありがとうカイル。コントローラーを使用して関連付けを介して作成時に割り当てるのではなく、モデル内のフィルターを使用して問題を解決しました。Current_user は、authlogic を使用して現在のユーザーのレコードを返すだけです。私はプロジェクトが弓である場所が好きで、いくつかの視覚的な調整、セキュリティ、およびその他の css の後に展開する可能性があります:)。コールバックとフィルターは、開発しているものが何であれ驚くべきものです。また、application_controller からモデルに変数を取得する必要がある場合は、クラス インスタンス変数 (アットマーク) ではなく、ドル記号の ruby​​ 変数を使用します。Rails は、独自の Php や sintra アプリに比べてとても簡単です。また、Rails アプリにはいくつのモデルが使用されていますか?

于 2009-10-08T04:25:32.383 に答える