私はacts_as_habtm_listという古いプラグインを見つけましたが、それはRails1.0.0用です。
この機能はacts_as_listに組み込まれていますか?情報が見つからないようです。
基本的に、artists_eventsテーブルがあります-モデルはありません。関係は、:has_and_belongs_to_manyを指定する2つのモデルを通じて処理されます
この状況で順序を指定するにはどうすればよいですか?
私はacts_as_habtm_listという古いプラグインを見つけましたが、それはRails1.0.0用です。
この機能はacts_as_listに組み込まれていますか?情報が見つからないようです。
基本的に、artists_eventsテーブルがあります-モデルはありません。関係は、:has_and_belongs_to_manyを指定する2つのモデルを通じて処理されます
この状況で順序を指定するにはどうすればよいですか?
アーティストとイベントの 2 つのモデルがあるとします。
それらの間に habtm 関係を持ち、各アーティストのイベントの順序を定義できるようにしたいと考えています。
これが私の解決策です。私は頭からこのコードを書いていますが、私の場合は同様の解決策が機能します。改善の余地があると確信しています。
Railsのacts_as_listプラグインを使用しています。
それが私がモデルを定義する方法です:
class Artist < ActiveRecord::Base
has_many :artist_events
has_many :events, :through => :artist_events, :order => 'artist_events.position'
end
class Event < ActiveRecord::Base
has_many :artist_events
has_many :artists, :through => :artist_events, :order => 'artist_events.position'
end
class ArtistEvent < ActiveRecord::Base
default_scope :order => 'position'
belongs_to :artist
belongs_to :event
acts_as_list :scope => :artist
end
ご覧のとおり、他の 2 つを結合する追加のモデル ArtistEvent が必要です。artist_events テーブルには、2 つの外部 ID と追加の列 (位置) が必要です。
act_as_list メソッドを (残念ながら ArtistEvent モデルで) 使用できるようになりましたが、
Artist.find(:id).events
特定のアーティストに属するイベントのリストを正しい順序で表示する必要があります。
私はそのような自己参照で試しています
class Product < ActiveRecord::Base
has_many :cross_sales
has_many :cross_sales_products, :through => :cross_sales, :order => 'cross_sales.position'
end
class CrossSale < ActiveRecord::Base
default_scope :order => 'cross_sales.position'
belongs_to :product
belongs_to :cross_sales_product, :class_name => "Product"
acts_as_list :scope => :product
end
create_table :cross_sales, :force => true, :id => false do |t|
t.integer :product_id, :cross_sales_product_id, :position
end
しかし、フィールド cross_sales.position は決して更新されません...
アイデア ?
更新: 'id' フィールドは、has_many :through オプションを使用してモデルを追加する場合に必要です。今はうまくいっている