1

3つのテーブルがあるとしましょう:

schools{id, name, desc, adress}
reviews{id, content, rating, school_id, user_id} # user_id & schoold_id is foregin keys
users{id, name, city}

3つのテーブルすべてを結合しschools.name、列を取得するRailsスコープまたはメソッドを作成するにはどうすればよいですか?reviews.contentreviews.ratingusers.name

これを試してみましたが、結合部分ではなく、レビューデータのみが返されます。

Review.joins(:school, :user).select("content, rating, schools.name, users.name").all

私はレール3.2を使用しています

4

1 に答える 1

1

次のように、学校とユーザーの has-many :through 関係を定義するだけです。

class School < ActiveRecord::Base
  has_many :users, :through => :reviews 
end
class Review < ActiveRecord::Base
  belongs_to :users
  belongs_to :schools
end
class User < ActiveRecord::Base
  has_many schools, :through => reviews
end

Review コントローラーでできること

def index
  @reviews = Review.all
end

次に、ビューで各レビュー オブジェクトに学校とユーザーが関連付けられるので、次のようにします。

review.content, review.rating, review.user.name, review.school.name

これを読むと、その理由を理解するのに役立ちます: http://guides.rubyonrails.org/association_basics.html

于 2013-03-02T23:44:39.667 に答える