1

私はこれらのモデルを持っています:

class Post
  belongs_to :user
end

class User
  has_many :posts
end

任意のゲスト ユーザー (つまり、user.role == 'guest') が「Some Title」というタイトルの投稿を取得したいと考えています。

タイトルはゲスト ユーザー間で一意になりますが、一部の非ゲスト ユーザーがそのタイトルの投稿をしている可能性があります。Rails ガイドApiを使用しようとしていますが、正しい構文を組み合わせることはできないようです。

のように単純であることを願っていましたが、 #ActiveRecord::Relation:0x4e6d380 に対して未定義のメソッド「posts」User.where(:role => 'guest').posts.find_by_title('some title')がスローされます。

Post.find_by_title('some title', :conditions => {:users => {:role => 'guest'}, :joins => :users}PG ::Error: エラー: テーブル "users" の FROM 句のエントリがありません。

'users' という名前のPost.joins(:users)スロー アソシエーションを持つものは見つかりませんでした。

4

2 に答える 2

2

.joinsを生成するActiveRecord メソッドの使用について読んでくださいSQL joins

User.joins(:posts).where("users.role = ? AND posts.title = ?", 'guest', 'some title')
于 2013-04-09T18:37:36.540 に答える
1

結合で Post.joins(:user) (:users ではない) を試してください。

于 2013-04-09T18:37:20.547 に答える