これはおそらくばかげた質問ですが、良い答えが見つからないようです。オブジェクトが属するモデルを参照する最良の方法を知りたいです。
例えば:
class User < ActiveRecord::Base
has_many :posts
end
class Post < ActiveRecord::Base
belongs_to :users
end
したがって、ユーザーの投稿を取得するには user.posts を使用できますが、投稿のユーザーを取得するには、逆はできません: post.user
Post モデルに「ユーザー」メソッドを追加すると機能しますが、最善の方法ではないようです。
class Post < ActiveRecord::Base
belongs_to :users
def user
User.find(self.user_id)
end
end
このブログ投稿http://www.fortytwo.gr/blog/18/9-Essential-Rails-Tipsを例として見ると、作成者が post.user.username を使用していることがわかりますが、これは機能しません。 :include => [:user] と同様にすぐに使用できますが、これも Post モデルの "user" メソッドを使用しても機能しません。
これは初歩的なことですが、ご理解のほどよろしくお願いいたします。この関係を達成するための最良の方法を知りたいだけです。
私の主な目標は、次のようにユーザーを参照するネストされたインクルードを使用して「検索」を作成することです。
post = Post.find(:all, :include => [:user])
これを試してみると、「ActiveRecord::ConfigurationError: 'user' という名前の関連付けが見つかりませんでした。スペルが間違っている可能性がありますか?」というメッセージが表示されます。
どうもありがとう。