Когда я пытаюсь отобразить все фильмы, в которых снимается человек, и у них более 1 роли (режиссер, сценарист, актер) в фильме, я получаю несколько строк для этого фильма.Если я добавляю .select ('DISTINCT id') или фильмы. *, Чтобы попытаться устранить ошибки, я получаю следующую ошибку:
Mysql2 :: Ошибка: у вас есть ошибка в синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования рядом с 'DISTINCT id FROM movies
INNER JOIN movie_people
ON movies
.id = movie_peop' at line 1: SELECT
фильмы .*, DISTINCT id FROM
фильмы INNER JOIN
movie_people ON
movies .id =
movie_people .movie_id WHERE ((
movie_people`.person_id = 601619)) ЗАКАЗАТЬ ПО ЗАГОЛОВКЕ ПРЕДЕЛ 18 СМЕЩЕНИЕ 0
Я не знаю, как правильно кодировать запрос верблюда.Пожалуйста, помогите.
Спасибо.
приложение / контроллеры
class PeopleController < ApplicationController
def show
@person = Person.find(params[:id])
@movies = @person.movies.select('DISTINCT id').
paginate :per_page => 18, :page => params[:page],
:order => sort_order(params[:sort])
end
приложение / модели
class Person < ActiveRecord::Base
has_many :movie_people
has_many :movies, :through => :movie_people
end
class MoviePerson < ActiveRecord::Base
belongs_to :movie
belongs_to :person
end
class Movie < ActiveRecord::Base
has_many :movie_people
has_many :people, :through => :movie_people
end
db / schema.rb
create_table "people", :force => true do |t|
t.string "name"
end
create_table "movie_people", :force => true do |t|
t.integer "movie_id"
t.integer "person_id"
t.integer "role"
end
create_table "movies", :force => true do |t|
t.string "title"
t.string "year"
end
movies / show.html.erb
Title:<%= @movie.title %><br>
Year:<%= @movie.year %><br>
<% @movie.movie_people.group_by(&:role).each do |r, a| %>
<%= %w(Director: Writer: Cast:)[r] %>
<% a.each do |c| %>
<%= link_to c.person.name,
:controller => 'people', :action => 'show', :id => c.person.id %>
<% end %><br>
<% end %>
Название: Фаренгейт 9/11
Год: 2004
Режиссер: Майкл Мур
Сценарист: Майкл Мур
В ролях:Майкл Мур Джордж Буш
people / show.html.erb
Name:<%= @person.name %>
<% @movies.each do |movie| %>
<br><%= link_to movie.title, movie %> (<%= movie.year %>)
<% end %>
Имя: Майкл Мур
Фаренгейт 9/11 (2004)
Фаренгейт 9/11 (2004)
по Фаренгейту 9/11 (2004)