У меня есть вопрос, касающийся отношений «многие ко многим», в частности has_many: через ассоциации.
Все учебники, которые я нашел, просто настраивают вас на модели и миграции, но оставляют вас в покое, когда дело доходит до контроллеров.
Что я хочу сделать, это обновить временные метки таблицы объединения, когда уже добавленная статья снова добавляется, чтобы она перемещалась в верхнюю часть «списка». Как мне это сделать?
Вот как выглядит мое действие создания:
def create
@article = Article.find_or_create_by_url(params[:article])
if current_user.articles.find(@article)
# update the timestamps on the join table
# ie moved the old article to the top
flash[:notice] = "Successfully added article (again)."
redirect_to @article
else
@article.users << current_user
if @article.save
flash[:notice] = "Successfully added article."
redirect_to @article
else
render :action => 'new'
end
end
end
Заранее спасибо!
Обновление:
@ Бен Ли
Спасибо за ваш ответ, так как у меня есть has_many через ассоциацию, моя модель статьи выглядит так:
has_many :readinglist_items, :dependent => :destroy
has_many :users, :through => :readinglist_items
Так что я не знаю, смогу ли я добавить :touch => true
к has_many, поскольку я просто хочу указать конкретную запись в таблице соединений.
Смысл обновления в действии создания состоит в том, чтобы переместить статью вверх (вместо добавления ее снова), если пользователь добавляет статью, которую он уже добавил в прошлом.