我有以下代码:
@contacts = Project.find(params[:project_id].to_i).contacts
有人可以解释一下 .contacts
部分在这一行的末尾做什么吗?我试图弄清楚,但找不到答案。我想应该是include之类的吧,但是我真的不明白。真的很高兴收到任何建议(也许只有一个解释链接就足够了。我试图找到一些东西,但我不知道我要搜索什么,因为我不知道这是什么..)
最佳答案
.contacts
方法返回与您的 Project
模型关联的 Contact
对象的集合。
您必须在 Project
模型 (app/models/project.rb
) 和 上定义一个
在您的 has_many :contacts
关系>belongs_to :projectContact
模型 ( app/models/contact.rb
) 上。
此关联是数据库中 projects
和 contacts
表之间关系的 activerecord 抽象,这意味着 projects
表中的一行(即 Project
对象)可以根据 上的外键
表。project_id
有很多联系人(即 contacts
表上的许多行)联系人
在代码中,@contacts = Project.find(params[:project_id].to_i).contacts
,find
方法返回单个对象( 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/