gpt4 book ai didi

ruby-on-rails - Rails 模型 attr_accessor 属性没有保存?

转载 作者:行者123 更新时间:2023-12-03 23:17:40 24 4
gpt4 key购买 nike

这是我正在使用的结构:

应用程序/模型/model.rb

class Model < ActiveRecord::Base
attr_accessor :some_var
end

应用程序/模型/model_controller.rb
class ModelsController < ApplicationController
def show
@model = Model.find(params[:id])
@other_var
if @model.some_var.nil?
@model.some_var = "some value"
@other_var = "some value"
else
@other_var = @model.some_var
end
end
end

每当我运行此代码(例如 show 方法)时,if 子句都会被评估为真(例如 @model.some_var == nil)。我该如何解决这个问题?我对 attr_accessor 如何工作的假设有什么问题吗?

最佳答案

attr_accessor是一个内置的 Ruby 宏,它将为对象的实例变量定义一个 setter 和一个 getter,并且与带有 ActiveRecord 实例的数据库列没有任何关系。例如:

class Animal
attr_accessor :legs
end

a = Animal.new
a.legs = 4
a.legs #=> 4

如果要将其保存到数据库中,则需要在迁移中定义一列。然后 ActiveRecord 将自动创建访问器方法,您可以(应该)删除您的 attr_accessor宣言。

关于ruby-on-rails - Rails 模型 attr_accessor 属性没有保存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12905103/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com