tan*_*ben 2 model ruby-on-rails attr-accessor
这是我正在使用的结构:
应用程序/模型/ model.rb
class Model < ActiveRecord::Base
attr_accessor :some_var
end
Run Code Online (Sandbox Code Playgroud)
应用程序/模型/ 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
Run Code Online (Sandbox Code Playgroud)
每当我运行此代码(例如show方法)时,if子句被评估为true(例如@ model.some_var == nil).我该如何解决这个问题?我对attr_accessor的工作方式有什么不妥吗?
hdg*_*ood 12
attr_accessor是一个内置的Ruby宏,它将为对象的实例变量定义一个setter和一个getter,并且与ActiveRecord实例的数据库列没有任何关系.例如:
class Animal
attr_accessor :legs
end
a = Animal.new
a.legs = 4
a.legs #=> 4
Run Code Online (Sandbox Code Playgroud)
如果要将其保存到数据库,则需要在迁移中定义列.然后ActiveRecord将自动创建访问器方法,您可以(应该)删除您的attr_accessor声明.
| 归档时间: |
|
| 查看次数: |
4205 次 |
| 最近记录: |