【问题标题】:In rails, can you have an association between two models where the primary_key and foreign_key are of different data types?在rails中,你可以在primary_key和foreign_key是不同数据类型的两个模型之间建立关联吗?
【发布时间】:2023-03-12 04:52:01
【问题描述】:

以下是否洁净?

schema.rb
  users
    id:int (autoincr.)
    uid:string <----------------
    ...

  fb_friends
    id:int (autoincr.)
    uid:int <-------------------
    friend_uid:int
    ...

user.rb
   has_many :fb_friends, :primary_key => "uid", :foreign_key => "uid"

请注意,将“用户”和他们的“fb_friends”联系在一起的键是不同的数据类型(字符串和整数)。在理想情况下,我可能不会这样做,但考虑到当前的系统架构,这似乎是最有效的解决方案。

但是这样做可以吗/没有 snafoos 可以吗?

【问题讨论】:

    标签: ruby-on-rails database activerecord foreign-keys primary-key


    【解决方案1】:

    这取决于您使用的数据库引擎,例如,对于 mysql =>

    国外对应的栏目 key 和引用的 key 必须有 内部类似的内部数据类型 InnoDB 以便它们可以进行比较 没有类型转换。尺寸 整数类型的符号必须是 相同的。字符串类型需要的长度 不一样。对于非二进制 (字符)字符串列, 字符集和排序规则必须是 一样的。

    更多信息here,无论如何,我不会说比较不同类型的字段是一个好习惯:(。

    希望对你有帮助!

    【讨论】:

      【解决方案2】:

      不确定它是否有效,但如果您可以选择更改它,我不会推荐它。在 Rails 迁移中更改列类型真的很容易:

      change_column :users, :uuid, :integer
      

      【讨论】:

        猜你喜欢
        • 2021-05-20
        • 1970-01-01
        • 2020-01-01
        • 1970-01-01
        • 2012-05-08
        • 1970-01-01
        • 1970-01-01
        • 2023-02-01
        • 1970-01-01
        相关资源
        最近更新 更多