如何在belongs_to关联中建立关系记录之间的链接?

时间:2015-09-02 01:05:03

标签: ruby-on-rails activerecord

我想在用户 CriminalRecord 之间创建一个简单的belongs_to关联。用户只有一条记录,一条记录属于用户。到目前为止,我在相应的文件中有以下内容。

模型> user.rb

class User < ActiveRecord::Base
end

模型&gt; criminal_record.rb

class CriminalRecord < ActiveRecord::Base
  belongs_to :user
end

db&gt;迁移&gt; 20150902003211_create_criminal_records

class CreateCriminalRecords < ActiveRecord::Migration
  def change
    create_table :criminal_records do |t|
      t.belongs_to :user, index: true
      t.murderer :boolean
      t.thief :boolean

      t.timestamps null: false
    end
  end
end

我可以为User创建一条记录,并为CriminalRecord创建一条记录。但是,即使我在犯罪记录实例中将user_id设置为用户的id,我也无法完成类似的操作。

User.last.criminal_records

或者就此而言,我无法做以下任何事情

john = User.last

john.criminal_record.create(murderer:false, thief: true)
# or
record = CriminalRecord.create(murderer:false, thief: true)
john << record

我得到NoM​​ethodError

1 个答案:

答案 0 :(得分:3)

has_one模型中定义User关联:

class User < ActiveRecord::Base
  has_one :criminal_record
end

而且,如果您的belongs_to :user表中的CriminalRecord模型和user_id列中已有criminal_records,那么您已经完成了设置。

然后你就可以做到:

john = User.last
john.criminal_record

这是Active Record Association的一个非常简单的用例。我强烈建议您阅读Official Documentation for Active Record Association以了解可用的关联类型,并按照正确的惯例在Rails应用程序中使用它们。