6

これはおそらくばかげた質問ですが、良い答えが見つからないようです。オブジェクトが属するモデルを参照する最良の方法を知りたいです。

例えば:

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' という名前の関連付けが見つかりませんでした。スペルが間違っている可能性がありますか?」というメッセージが表示されます。

どうもありがとう。

4

2 に答える 2

8

私はRailsに少し慣れていませんが、これは自動的に機能するはずです...

ああ、Post の親クラスにbelongs_to :users;という名前を付けました。しかし、それは単一のユーザーにしか属していないため、Rails は期待していますbelongs_to :user(または、もちろんbelongs_to :users, :class_name => "User")。

あれは:

class Post < ActiveRecord::Base
  belongs_to :user
end

仕事をするべきです。

于 2010-01-06T16:19:34.543 に答える
0

モデルに属します。単数形にする必要があります。お気に入り

belongs_to :user
于 2012-11-30T11:06:46.670 に答える