您好我正在制作一个表格,用于建立两个模型之间的多对多关系
使用此solution
我有三个模特
艺术家,文章,艺术家关系。
这是艺术家模型。
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
这是ArtistRelationship Model
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 ::错误:order子句中的'created_at'列不明确:SELECT 1 AS FROM
artists
INNER JOINartist_relationships
ONartists
。id
= {{ 1}}。artist_relationships
WHEREartist_id
。artist_relationships
= 1 ANDarticle_id
。artists
= 2 ORDER BY created_at DESC LIMIT 1
我无法理解它的意思..
当我在代码上方使用pry进行调试时会发生 weired 事情
id
当我直接拨打 <%= check_box_tag :artist_ids, artist.id, article.artists.include?(artist), :name => 'article[artist_ids][]' %>
时,在pry控制台中
它引起了我预期的相同错误。但
当我致电article.artists.include?(artist)
时,它会返回属于该文章的艺术家数组
然后我再次致电article.artists
。我工作得很好。
这有什么问题?
答案 0 :(得分:1)
在所有默认范围内,包括类的表格化版本
# article.rb
default_scope order('articles.created_at DESC')