【问题标题】:avoid loop in returning the same attribute in the definition of the method避免在方法定义中返回相同属性的循环
【发布时间】:2010-07-14 10:25:49
【问题描述】:

我有一个简单的文章模型,其中包含一个predefined_title 属性和一个 user_defined_title 属性 我想要的只是创建一个虚拟属性,如果可用,则显示 user_defined_title,如果不可用,则显示predefined_title 但我认为添加另一个虚拟属性是多么浪费,如果我只能做这样的事情

def user_defined_title 用户定义的标题 ||预定义标题 结束

但随后它进入无限循环。有什么办法可以避免吗?

谢谢!

【问题讨论】:

    标签: ruby-on-rails activerecord


    【解决方案1】:

    我还不能解释为什么以下方法有效,但它确实有效:

    def user_defined_title
       #self[:user_defined_title] || self[:predefined_title] 
       #or
       read_attribute(:user_defined_title) || read_attribute(:predefined_title)
    end
    

    【讨论】:

    • ActiveRecord 的#user_defined_title 实现是调用#read_attribute。你只是绕过它。请注意,在表单中,user_defined_title 字段将具有在predefined_title 中定义的值。
    • 我想这是编程太晚的一件坏事。我知道 read_attribute 并且实际上尝试过。但是还是给我那个无限循环,看你的回答,我又试了一次,又循环了,不敢相信你们两个会错,我仔细看了看,属性名必须是一个符号。这解决了一切。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2020-01-29
    • 1970-01-01
    • 1970-01-01
    • 2015-06-07
    • 1970-01-01
    • 2021-07-28
    • 1970-01-01
    • 2017-09-15
    相关资源
    最近更新 更多