weired StatementInvalid ошибка при построении формы отношения многие-ко-многим в рельсах 3

Здравствуйте, я делаю форму для установления связи "многие ко многим" между двумя моделями.

используя это решение

У меня есть три модели

Художник, Статья, Художник Отношения.

Это модель художника.

 class Artist < ActiveRecord::Base
   default_scope order('created_at DESC')

   attr_accessible :body_en, :body_kr, :title_en, :title_kr

   has_many :articles, :through => :artist_relationships
   has_many :artist_relationships
 end

А это модель статьи.

 class Article < ActiveRecord::Base
    default_scope order('created_at DESC')

    attr_accessible :title, :body, :date

    has_many :artists, :through => :artist_relationships
    has_many :artist_relationships

 end

А это модель отношений с художником.

 class ArtistRelationship < ActiveRecord::Base
   default_scope order('created_at DESC')

   attr_accessible :article_id, :artist_id

   belongs_to :artist
   belongs_to :article

 end

Теперь у меня есть форма для статьи для набора художников.

 <%= form_for [:admin, article] do |f| %>
   .....
     <% Artist.all.each do |artist| %>
        <div>
           <%= label_tag :artist_ids, artist.title_kr %>
           <%= check_box_tag :artist_ids, artist.id, article.artists.include?(artist), :name => 'article[artist_ids][]' %>
        </div>
     <% end %>

Ошибка отсюда

 article.artists.include?(artist)

Это вызывает эти ошибки

Mysql2 :: Ошибка: столбец created_at в предложении порядка неоднозначен: SELECT 1 AS one FROM artists INNER JOIN artist_relationships ON _8 _._ 9_ = _10 _._ 11_ WHERE _12 _._ 13_ = 1 AND _14 _._ 15_ = 2 ORDER BY created_at DESC LIMIT 1

Я не понимаю, что это значит ...

И что-то утомленное происходит, когда я использую pry для отладки прямо над кодом.

 <%= check_box_tag :artist_ids, artist.id, article.artists.include?(artist), :name => 'article[artist_ids][]' %>

в консоли pry, когда я напрямую вызываю article.artists.include?(artist)

Это вызывает ту же ошибку, что и я. но

Когда я вызываю article.artists, он возвращает массив исполнителей, принадлежащих этой статье.

затем я снова звоню article.artists.include?(artist). У меня нормально работает.

В чем проблема?


person synthresin    schedule 06.02.2013    source источник


Ответы (1)


во всей области действия по умолчанию включите табличную версию класса

# article.rb
default_scope order('articles.created_at DESC')
person jvnill    schedule 06.02.2013
comment
Спасибо за ваш ответ! - person synthresin; 06.02.2013