我有一个简单的"Log"模型,它记录调用控制器操作的事实.

该"日志(log)"记录的条目应该只创建一次,并且永远不会更改.另外,我会在数据库中有很多这样的记录.

因此,不需要"UPDATED_AT"列(不需要浪费硬盘上的内存).

我如何告诉Rails只保留"Created_at"列,而不使用"update_at"?

有没有办法将"Log"模型设为只读?

推荐答案

通过将readonly?方法添加到模型,可以将模型设置为只读.

class Log < ActiveRecord::Base
    # Prevent modification of existing records
    def readonly?
       !new_record?
    end

    # Prevent objects from being destroyed
    def before_destroy
      raise ActiveRecord::ReadOnlyRecord
    end

end

上面的例子是从here开始采用的.

如果不需要updated_at列,只需将其从数据库中删除(或不添加)即可.Rails不会更新不存在的内容.

Database相关问答推荐

找不到复制副本集

第一次请求后数据库连接关闭

我如何知道 DynamoDB 表分布在多少个分区上?

mysql数据库自动分区

预测下一个自动插入的行 ID (SQLite)

时间数据库设计,有一个转折(live vs draft rows)

什么技术对处理数百万条记录最有效?

用于存储食谱的数据库设计

在 Oracle 中查找数据库的大小

如何将 PHP 会话数据保存到数据库而不是文件系统中?

基于邮政编码的纬度和经度

C# 连接到数据库并列出数据库

什么是本体数据库?

HTML5 数据库存储 (SQL lite) - 几个问题

在 SQL Server 中,如何以类似于 Oracle 的SELECT FOR UPDATE WAIT的方式锁定单行?

Grails 中的 SQL/数据库视图

SQL - 如何转置?

为什么用 varbinary 而不是 varchar

在 SQLite 表中使用文本作为主键不好?

如何在 Java 中检测 SQL 表的存在?