您好,我正在制作一个用于在两个模型之间建立多对多关系的表格
使用此解决方案
我有三个模型
艺术家,文章,艺术家关系。
这是艺术家模型。
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::Error: 列 'created_at' 在 order 子句中不明确: SELECT 1 AS one FROM
artists
INNER JOINartist_relationships
ONartists
。id
=artist_relationships
。artist_id
在哪里artist_relationships
。article_id
= 1 和artists
。id
= 2 ORDER BY created_at DESC LIMIT 1
看不懂是什么意思。。
当我使用 pry 在代码上方进行调试时,会发生奇怪的事情
<%= check_box_tag :artist_ids, artist.id, article.artists.include?(artist), :name => 'article[artist_ids][]' %>
当我直接调用时在撬控制台中article.artists.include?(artist)
它引发了与我预期相同的错误。但
当我调用 article.artists
它时,它会返回一个属于该文章的艺术家数组
然后我article.artists.include?(artist)
再次打电话。我工作正常。
这有什么问题?