【问题标题】:Has_one, Belongs_to migrationHas_one,Belongs_to 迁移
【发布时间】:2014-02-19 04:45:33
【问题描述】:

我在真正理解这个概念的工作原理时遇到了一些麻烦。首先,我将使用设计 gem 进行用户身份验证和激活,但我需要知道我的迁移应该是什么样子。我有一个用于激活帐户的唯一密钥(将提供用户)。

所以这就是我的代码很早就看起来的样子,请注意:

用户模型

class User < ActiveRecord::Base
  has_one :safe
  has_many :contacts
end

安全模型

class Safe < ActiveRecord::Base
  belongs_to :user
end

CreateSafes 迁移文件

class CreateSafes < ActiveRecord::Migration
  def change
    create_table :saves do |t|
      t.string :safe_key

      t.timestamps
    end
  end
end

创建用户迁移

class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
      t.string :email
      t.string :password

      t.timestamps
    end
  end
end

我真的只是不确定是否将 user_id 值添加到安全迁移表中,或者我是否只使用 safe_key,因为这将是一个完全独特的值。任何帮助和智慧将不胜感激。谢谢。

【问题讨论】:

  • 根据我的经验,您从不直接接触迁移文件,而是使用模型生成器。您可以通过查看您的架构文件来判断您的表之后的样子。如果你犯了错误,你只需创建一个新的迁移来修复它。
  • 好的,考虑到手头问题的整体简单性,我什至会考虑在模型级别而不是数据库级别进行。

标签: ruby-on-rails ruby devise migration models


【解决方案1】:

是的,手动将 user_id 添加到安全表中。在关联中,rails 将外键与:belongs_to 存储在表中,然后您可以使用safe.user 获取用户,或使用user.safe 获取保险箱。

【讨论】:

  • 是否还要将 safe_id 添加到用户表中?
  • 不,你不必因为 Rails 处理它的关联的方式。即使在 SQL 中,使用模型的方式是,如果您有保险箱或用户,您可以通过适当的查询找到另一个。
猜你喜欢
  • 2016-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-01
  • 2014-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多