Ruby on rails “关闭”;更新的“U at”;钢轨立柱
我有一个简单的“日志”模型,它记录了调用控制器操作的事实 这个“日志”记录的条目应该创建一次,并且永远不会更改。此外,我将在数据库中有许多这样的记录 因此,不需要“updated_at”列(不需要在硬盘上浪费内存) 我如何告诉Rails只保留“created_at”列而不使用“updated_at”Ruby on rails “关闭”;更新的“U at”;钢轨立柱,ruby-on-rails,database,model,Ruby On Rails,Database,Model,我有一个简单的“日志”模型,它记录了调用控制器操作的事实 这个“日志”记录的条目应该创建一次,并且永远不会更改。此外,我将在数据库中有许多这样的记录 因此,不需要“updated_at”列(不需要在硬盘上浪费内存) 我如何告诉Rails只保留“created_at”列而不使用“updated_at” 有没有办法使“Log”模型成为只读的?我想您在列中更新了,因为您在模型的迁移文件中使用了t.timestamps速记。如果不需要该列,则可以明确指定所需内容: class Log < Acti
有没有办法使“Log”模型成为只读的?我想您在列中更新了
,因为您在模型的迁移文件中使用了t.timestamps
速记。如果不需要该列,则可以明确指定所需内容:
class Log < ActiveRecord::Migration
def self.up
create_table :logs do |t|
t.column :foo, :string
t.column :created_at, :datetime
end
end
def self.down
drop_table :logs
end
end
类日志
通过向模型添加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
类日志
上面的例子是从中采用的
如果不需要在
列中更新,只需将其从数据库中删除(或不添加)。Rails不会更新没有的内容。很酷,谢谢。还有一件事-我如何防止破坏记录?这个“只读”的技巧不适用于这个…约翰,这是一个经过验证的解决方案?你用过吗?很好的解决方案。Rails足够聪明,知道在列存在时更新创建的_。