Tag: attr accessor

Mailer无法访问用户模型中的reset_token

遇到@ user.reset_token返回nil的问题。 应用程序/视图/ user_mailer文件/ password_reset.html.erb Reset_token在User模型中声明,当我尝试使用sidekiq worker时会发生此问题。 请参阅下面的代码。 应用程序/模型/ user.rb class User < ActiveRecord::Base attr_accessor :reset_token def User.new_token SecureRandom.urlsafe_base64 end def send_password_reset_email PasswordResetWorker.perform_async(self.id) end private def create_reset_digest self.reset_token = User.new_token update_attribute(:reset_digest, User.digest(reset_token)) update_attribute(:reset_sent_at, Time.zone.now) end 应用程序/工人/ password_reset_worker.rb class PasswordResetWorker include Sidekiq::Worker sidekiq_options retry: false def perform(user_id) user = User.find(user_id) UserMailer.password_reset(user).deliver end end 应用程序/邮寄者/ user_mailer.rb class […]

attr_accessor强类型Ruby on Rails

只是想知道是否有人可以通过强类型的视图阐明Ruby on Rails中getter setter的基础知识。 我对rails上的ruby非常新,并且主要对.NET有很好的理解。 例如,我们假设我们有一个名为Person的.net类 class Person { public string Firstname{get;set;} public string Lastname{get;set;} public Address HomeAddress{get;set;} } class Address { public string AddressLine1{get;set;} public string City{get;set;} public string Country{get;set;} } 在Ruby中,我会写这个 class Person attr_accessor :FirstName attr_accessor :LastName attr_accessor :HomeAddress end class Address attr_accessor :AddressLine1 attr_accessor :City attr_accessor :Country end 查看Person类的Ruby版本如何指定访问器方法FirstName,LastName和HomeAddress的类型? 如果我要使用这个类,我可以将任何类型提供给HomeAddress,但我希望这个访问器方法只接受TYPE地址。 有什么建议 ? […]

在rails中,默认的getter和setter会是什么样子?

我知道我可以编写attr_accessor:tag_list来为Rails中的对象创建一个虚拟属性tag_list。 这允许在对象的表单中存在tag_list属性。 如果我使用attr_accessor:tag_list,我可以在模型中对tag_list执行操作以从表单中提取和操作数据。 我想知道的是,如何编写一个完全复制attr_accessor默认function的getter和setter,而不是编写attr_accessor。 例如: def tag_list #what goes here end 仅供参考我尝试过 def tag_list @tag_list end 这不起作用。

Ruby:动态生成attribute_accessor

我正在尝试从散列(使用嵌套散列)生成attr_reader,以便它自动镜像instance_variable创建。 这是我到目前为止: data = {:@datetime => ‘2011-11-23′, :@duration => ’90’, :@class => {:@price => ‘£7’, :@level => ‘all’}} class Event #attr_reader :datetime, :duration, :class, :price, :level def init(data, recursion) data.each do |name, value| if value.is_a? Hash init(value, recursion+1) else instance_variable_set(name, value) #bit missing: attr_accessor name.to_sym end end end 但我找不到办法做到这一点:(