我找到了一个名为 act_as_habtm_list 的旧插件 - 但它适用于 Rails 1.0.0。
现在这个功能是内置在acts_as_list 中的吗?我似乎无法找到任何有关它的信息。
基本上,我有一个 Artist_events 表 - 没有模型。该关系通过指定 :has_and_belongs_to_many 的这两个模型处理
在这种情况下如何指定顺序?
最佳答案
我假设您有两个模型 - 艺术家和事件。
您希望在它们之间建立 habtm 关系,并且希望能够为每个艺术家定义事件的顺序。
这是我的解决方案。我正在从头开始编写这段代码,但类似的解决方案适用于我的情况。我很确定还有改进的余地。
我正在使用 rails act_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
如您所见,您需要一个额外的模型 ArtistEvent,加入其他两个模型。 Artist_events 表应该有两个外部 ID 和附加列 - 位置。
现在您可以使用acts_as_list 方法(不幸的是在ArtistEvent 模型上)但是类似
Artist.find(:id).events
应该以正确的顺序为您提供属于特定艺术家的事件列表。
关于ruby-on-rails - act_as_list 与 has_and_belongs_to_many 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2274934/