ruby-on-rails - act_as_list 与 has_and_belongs_to_many 关系

标签 ruby-on-rails ruby-on-rails-plugins has-and-belongs-to-many acts-as-list

我找到了一个名为 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/

相关文章:

ruby-on-rails - 我的 rails 助手将 '<' 渲染为 '&lt;' !如何使其正确渲染?

ruby-on-rails - Rails - 播种 HABTM 协会

iPhone NS时区 : localTimeZone confusion

ruby-on-rails - Ruby on Rails 找到一个关联对象,该对象也有另一个关联

rubygems - gemspec中包含的依赖关系未添加到Rails引擎的 Assets 管道中

ruby-on-rails - 守护进程自动终止

ruby-on-rails - 在 Rails 中实现标签 : How to reference multiple items with one tag?

mysql - Ruby On Rails 关于多对多关系的数据从 sqlite3 迁移到 mysql

mysql - 连接多个模型的 Rails 数据建模

ruby-on-rails - 无法加载此类文件 -- bcrypt_ext