如何从控制器访问虚拟属性

时间:2013-04-18 10:19:58

标签: ruby-on-rails ruby-on-rails-3

我在Mac OS X Mountain Lion中使用Rails 3.2.11和Ruby 1.9.3

我有一个用户模型,我创建了一个名为message

的虚拟属性
attr_accessor :message

在我的代码中,我试试这个:

if condition == true
  self.message = "Value is True."
else
  self.message = "Value is not True"

在我的控制器中,我试试这个

def method
  user = User.find(1)
  flash[:message] = user.message
end

但是flash消息不会显示任何内容。这是零。如何将模型中设置的值传递给控制器​​?非常感谢!

1 个答案:

答案 0 :(得分:3)

似乎逻辑:当你从你的数据库中检索一个对象时,没有理由它的attr_accessor应该包含任何内容。

坚持你的逻辑,你宁愿:

  • 删除attr_accessor

  • 在您的用户类中创建一个方法。

像这样:

def message 
  if condition
    "Value is True."
  else
    "Value is not True"
  end
end

请注意,您正在耦合数据和视图,这不是一个好习惯。