Tag: getter

输入字段方法(text_area,text_field等)如何从form_for块中的记录中获取属性值?

我有一个标准的Rails 2.3.5应用程序和一个名为Post的模型。 Post有一个名为url的属性,并定义了以下getter: def url p = ‘http://’ u = self[:url] u.starts_with?(p) ? u : “#{p}#{u}” end 如果我加载script/console ,我可以执行Post.first.url并获得所需的结果(例如,如果属性的真值是foo.com,则返回http://foo.com ) 但是,如果我有一个form_for块,并执行类似form.text_field :url ,它将不会返回带有http:// form.text_field :url的url; 相反,它只是返回foo.com form_for如何在ActiveRecord模型上访问属性? 它似乎绕过任何超载的getter。

Mongoid定制的setter / getters和super

我正在尝试修改属性Mongoid模型上的setter,但与ActiveRecord不同,我不能调用super来让Mongoid实际设置属性,因为模型使用include Mongoid::Document而不是ActiveRecord::Base的子类。 我希望能够做这样的事情。 class User include Mongoid::Document embeds_one :email_account def email_account=(_email_account) ret = super puts “email account updated!” do_something ret end end 除了,因为它不是一个子类,产生 NoMethodError: super: no superclass method 想法? 编辑: 你会怎么做一个吸气剂,比如 class User include Mongoid::Document embeds_one :email_address def email_address super || “myself@gmail.com” end end