【问题标题】:Mimic SQL table with ActiveModel Attributes使用 ActiveModel 属性模拟 SQL 表
【发布时间】:2021-01-02 17:05:52
【问题描述】:

我正在使用

ActiveModel::Model 
ActiveModel::Attributes.

我注意到我的表单对象(活动模型)中使用的属性方法不允许:text 类型。我想知道如何设置属性来模仿下面的 sql 表?

create_table "teachers", force: :cascade do |t|
    t.string "name"
    t.text "credentials", default: [], array: true
    t.integer "age"
    t.boolean "working", default: false
    t.bigint "user_id"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.index ["user_id"], name: "index_cpas_on_user_id"
  end

【问题讨论】:

    标签: ruby-on-rails ruby activerecord ruby-on-rails-6 activemodel


    【解决方案1】:

    只需使用attribute :my_attribute, :string

    ActiveRecord 如何处理转换VARCHAR 列(由:string 类型表示)和TEXT 列之间没有实际区别。

    唯一的区别是迁移生成的 SQL 以及用于存储实际信息的列类型。

    例如在 Postgres 上,TEXTVARCHAR 列的上限约为 1GB,但 VARCHAR(n) 允许您设置任意下限,例如 VARCHAR(255) - 但两者都没有性能优势,而且因此使用 TEXT 类型没有任何优势。当然,这取决于所使用的 RDBMS。

    见:

    【讨论】:

    • 使用数组呢?还是设置一个默认值?
    • 使用数组和默认选项。阅读手册...
    • 你能把链接发给我吗,我找了,但是找不到活动模型的信息,我找到了活动记录的数组选项。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-30
    • 2020-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多