ruby-on-rails - Ruby on Rails ActiveRecord .anything 在找到后做什么?

标签 ruby-on-rails ruby activerecord

我有以下代码:

@contacts = Project.find(params[:project_id].to_i).contacts

有人可以解释一下 .contacts 部分在这一行的末尾做什么吗?我试图弄清楚,但找不到答案。我想应该是include之类的吧,但是我真的不明白。真的很高兴收到任何建议(也许只有一个解释链接就足够了。我试图找到一些东西,但我不知道我要搜索什么,因为我不知道这是什么..)

最佳答案

.contacts 方法返回与您的 Project 模型关联的 Contact 对象的集合。

您必须在 Project 模型 (app/models/project.rb) 和 上定义一个 has_many :contacts 关系>belongs_to :project 在您的 Contact 模型 ( app/models/contact.rb ) 上。

此关联是数据库中 projectscontacts 表之间关系的 activerecord 抽象,这意味着 projects 表中的一行(即 Project 对象)可以根据 上的外键 project_id 有很多联系人(即 contacts 表上的许多行)联系人表。

在代码中,@contacts = Project.find(params[:project_id].to_i).contactsfind 方法返回单个对象( Project 模型)从您的 projects 表,列 id 的值作为 params[:project_id] 传递。然后 .contacts 返回 contacts 表中的所有关联行(project_id 的值等于 params[:project_id] 的行)。 to_i).

在单个表 rails activerecord 操作中,下行给出了 contacts 表中相同的行列表,其中列 project_id 的值为 params[:project_id] .to_i 作为您问题中的行。

@contacts = Contact.where(project_id: params[:project_id].to_i)

这将返回 contacts 表中 project_id 列的值等于 params[:project_id].to_i 的所有行。

rails 在 activerecord associations 上有很好的文档和 active record

关于ruby-on-rails - Ruby on Rails ActiveRecord .anything 在找到后做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40633135/

相关文章:

ruby-on-rails - Incorrect Time.now - 不遵守时区设置

mysql - 在 Ubuntu 20.04 上安装 mysql2 gem 版本 '0.3.21' 时出错

ruby-on-rails - 使用 Barby CairoOutputter 的未定义方法 `two_dimensional?'

ruby-on-rails-3 - Rails 不创建中间表? - Habtm 关系

javascript - 使来自 rails 模型的伪属性也可以在 javascript 中访问

ruby-on-rails - 每三个数组项创建一个新的 Bootstrap 行

ruby-on-rails - 如何从 Rails 中的字符串中识别一组日期

node.js - 在 Ruby 中从 aws-kms 解密 key

ruby-on-rails-3 - #<ActiveRecord::ConnectionAdapters::TableDefinition:0x9dee690> 的未定义方法 `database_authenticatable'

postgresql - ActiveRecord - 无需 Rails 即可创建数据库