我在过go 建立了这段HABTM人的关系,而且它以前一直有效....现在不是了,我绞尽脑汁想弄清楚到底出了什么问题.我看了一整天的导轨指南,似乎不知道我做错了什么,所以我真的很感激你的帮助.

我有两个通过连接模型连接的模型,我试图根据关联模型的属性查找记录.

事件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 ] )

但我犯了一个错误:

"未找到名为‘兴趣’的关联;可能是您拼错了?"...

我没有偏离航线.

我试过:

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

但我犯了一个错误:

#Class:0x4383348的未定义方法"兴趣"

我怎样才能找到兴趣id为4的活动....我肯定会因为这个大笑而秃顶

推荐答案

你需要包括兴趣表.

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

你的帖子写得很对,但你没有把兴趣多元化.

Update

因为这个答案仍然受到关注,我认为使用ActiveRec或d::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相关问答推荐

在VP中部署rails 7和nginx

如何在嵌套路由中使用Ruby on rails多态关联

RSpec系统测试无法从工厂访问新创建的记录

搜查升级到 4.0.0 和 ActionText::RichText

无法在 Rails 中使用 wkhtmltopdf 写入临时文件

创建大哈希的 Ruby 方法

在 POST 请求中添加了 Rails 奇怪的参数

在 Rails 6.1 升级后,作业(job)规范使用 Minitest::UnexpectedError 包装错误

如何获取 Rails 表单构建器将为某个字段生成的 HTML名称属性?

Rails 3 中的动态错误页面

如何在 Ruby on Rails 中的 cookie 上设置 HttpOnly 标志

bundle和gem安装的区别?

设计和强大的参数

在 ID 存在时获取表的未知主键

您将如何在 RoR 中创建类似 SO 或 Facebook 的通知系统?

在范围内传递参数

Active Record has_many:通过删除一条关联记录

如何在 Rails 应用程序中测试 ElasticSearch (Rspec)

向 Rails 模型添加外键

Ruby 1.87 与 1.92 Date.parse