Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在mailer视图中访问虚拟属性-rails_Ruby On Rails - Fatal编程技术网

Ruby on rails 在mailer视图中访问虚拟属性-rails

Ruby on rails 在mailer视图中访问虚拟属性-rails,ruby-on-rails,Ruby On Rails,当有人创建他们的帐户时,我试图在我的rails用户模型中创建一个虚拟属性。这是个杂烩。在数据库中,每个用户都有另一个哈希,该哈希是此虚拟属性的加密版本 在我的模型中,我创建了属性:attr\u accessor,以便可以从应用程序的其他区域调用它。例如,当我发送我的时事通讯时,我在嵌入式ruby中包含了如下虚拟哈希: 但它总是返回零。是否可以从mailer视图内部访问这些虚拟属性?我真的不明白为什么它不起作用,因为我在mailers中使用了相同的机制,其他时候都没有失败。在Rails模型中使用

当有人创建他们的帐户时,我试图在我的rails用户模型中创建一个虚拟属性。这是个杂烩。在数据库中,每个用户都有另一个哈希,该哈希是此虚拟属性的加密版本

在我的模型中,我创建了属性
:attr\u accessor
,以便可以从应用程序的其他区域调用它。例如,当我发送我的时事通讯时,我在嵌入式ruby中包含了如下虚拟哈希:

但它总是返回零。是否可以从mailer视图内部访问这些虚拟属性?我真的不明白为什么它不起作用,因为我在mailers中使用了相同的机制,其他时候都没有失败。

在Rails模型中使用
attr\u accessor定义的虚拟属性是一个字段,它存储在运行代码的机器的内存中,而不会持久化到数据库中

这意味着此字段只有在您在使用它之前设置的情况下才有值,并且只有在同一台机器上才有值(在您的生产环境中,您将有多台服务器)

如果您需要保存该文件,以便以后或从另一台计算机检索,则必须通过以下方式将该文件定义为模型的数据库属性:

  • 在使用ActiveRecord的情况下创建迁移脚本
  • 使用NoSQL数据库的NoBrainer或Mongoid等ORM向模型中添加
    字段

何时设置
@user.hash_name
的值?由于这是一个虚拟属性(因此不会在数据库中持久化),您必须在访问它之前设置该值。@ZedTuX我在创建用户之前设置了它。哦,好吧,只有在发送时事通讯之前我把它设置好了,它才会起作用。是的,没错。让我把答案贴出来,这样你就可以接受了;)