gpt4 book ai didi

ruby - 如何使用 has_many :through association? 更新连接模型

转载 作者:数据小太阳 更新时间:2023-10-29 08:41:24 25 4
gpt4 key购买 nike

我有一个关于多对多关系的问题,特别是 has_many :through 关联。

我找到的所有教程都只是让您了解模型和迁移,但在涉及 Controller 时却让您束手无策。

我想做的是在再次添加已经存在的文章时更新连接表的时间戳,以便它移动到“列表”的顶部。我该怎么做?

这是我的创建操作的样子:

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,因为我只想连接表中的特定条目。

创建操作中更新的要点是,如果用户添加了过去已经添加的文章,则将文章移至顶部(而不是再次添加)。

最佳答案

如果我没理解错的话,这不是 Controller 问题,而是模型问题。您可以在 belongs_to 关系上指定 :touch => true。这样一来,无论何时更新子项,关联的 update_at 都会得到很好的更新。

所以在你的 Article 模型中加入这样的东西:

belongs_to :whatever, :touch => true

此外,切线相关:从代码中不清楚您的代码到底在做什么,但看起来您可能正在将 createupdate 功能都放在create 方法而不是适本地拆分它们。

关于ruby - 如何使用 has_many :through association? 更新连接模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4248629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com