Rails has_many: through и настройка свойства в модели Join

Похожий наэтот вопросКак установить свойство в модели соединения непосредственно перед сохранением в этом контексте?

class Post < ActiveRecord::Base
  has_many :post_assets
  has_many :assets, :through => :post_assets
  has_many :featured_images, :through => :post_assets, :class_name => "Asset", :source => :asset, :conditions => ['post_assets.context = ?', "featured"]

end

class PostAssets < ActiveRecord::Base
  belongs_to :post
  belongs_to :asset

  # context is so we know the scope or role
  # the join plays
  validates_presences_of :context
end

class Asset < ActiveRecord::Base
  has_many :post_assets
  has_many :posts, :through => :post_assets
end

Я просто хочу быть в состоянии сделать это:

@post = Post.create!(:title => "A Post")
@post.featured_images << Asset.create!(:title => "An Asset")
# ...
@post = Post.first
@featured = @post.featured_images.first
  #=> #<Asset id: 1, title: "An Asset">
@featured.current_post_asset #=> #<PostAsset id: 1, context: "featured">

Как это будет работать? Я весь день колотил головой :).

Что в настоящее время происходит, когда я делаю это:

@post.featured_images << Asset.create!(:title => "An Asset")

Тогда модель соединенияPostAsset то, что создается, никогда не получает шанс установитьcontext, Как мне установить это свойство контекста? Это выглядит так:

PostAsset.first #=> #<PostAsset id: 1, context: nil>

Обновить:

Я создал тестдрагоценный камень попытаться изолировать проблему. Есть ли более простой способ сделать это ?!

этоActsAsJoinable :: Базовый класс делает так, что вы можете иметь много-много отношений с контекстом между ними в модели соединения. И это добавляет вспомогательные методы. Основатесты показать в основном то, что я пытаюсь сделать. Есть лучшие идеи о том, как сделать это правильно?

Ответы на вопрос(1)

Ваш ответ на вопрос