Здравствуйте, я делаю форму для установления связи "многие ко многим" между двумя моделями.
используя это решение
У меня есть три модели
Художник, Статья, Художник Отношения.
Это модель художника.
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 JOINartist_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)
. У меня нормально работает.
В чем проблема?