【问题标题】:How can I establish the link between relational records in belongs_to association?如何在 belongs_to 关联中建立关系记录之间的链接?
【发布时间】:2015-09-02 01:05:03
【问题描述】:

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

模型 > user.rb

class User < ActiveRecord::Base
end

模型 >criminal_record.rb

class CriminalRecord < ActiveRecord::Base
  belongs_to :user
end

db > 迁移 > 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

我得到 NoMethodError

【问题讨论】:

    标签: ruby-on-rails activerecord


    【解决方案1】:

    在您的 User 模型中定义 has_one 关联:

    class User < ActiveRecord::Base
      has_one :criminal_record
    end
    

    而且,如果您的CriminalRecord 模型中已经有belongs_to :user 并且您的criminal_records 表中的user_id 列中已经有了belongs_to :user,那么您已经准备就绪。

    那么你就可以做到:

    john = User.last
    john.criminal_record
    

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

    【讨论】:

      猜你喜欢
      • 2013-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-21
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多