gpt4 book ai didi

ruby-on-rails - HABTM 关系——如何根据关联模型的属性查找记录

转载 作者:行者123 更新时间:2023-12-03 01:41:44 25 4
gpt4 key购买 nike

我过去已经建立了这种HABTM关系,并且以前一直有效......现在不行,我束手无策,试图找出问题所在。我一整天都在浏览 Rails 指南,似乎无法弄清楚我做错了什么,所以非常感谢您的帮助。

我有 2 个模型通过连接模型连接,我正在尝试根据关联模型的属性查找记录。

事件.rb

has_and_belongs_to_many :interests

兴趣.rb

has_and_belongs_to_many :events

以及创建的连接表迁移,如下所示:

create_table 'events_interests', :id => false do |t|
t.column :event_id, :integer
t.column :interest_id, :integer
end

我尝试过:

@events = Event.all(:include => :interest, :conditions => [" interest.id = ?", 4 ] )

但出现错误:

"Association named 'interest' was not found; perhaps you misspelled it?"...

我当然没有这么做。

我尝试过:

@events = Event.interests.find(:all, :conditions => [" interest.id = ?", 4 ] )

但出现错误:

"undefined method `interests' for #Class:0x4383348"

我怎样才能找到兴趣 id 为 4 的事件......我肯定会因为这个哈哈而秃头

最佳答案

您需要包含兴趣表。

@events = Event.all(:include => :interests, :conditions => ["interests.id = ?", 4])

您在帖子中说得对,但您没有多元化兴趣。

更新

因为这个答案仍然受到关注,我认为使用 ActiveRecord::Relation 语法更新它可能是一个好主意,因为上述方式将被弃用。

@events = Event.includes(:interests).where(interests: { id: 4 })

@events = Event.includes(:interests).where('interests.id' => 4)

如果您想要自定义条件

@events = Event.includes(:interests).where('interests.id >= 4')

关于ruby-on-rails - HABTM 关系——如何根据关联模型的属性查找记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4687004/

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