代码之家  ›  专栏  ›  技术社区  ›  Malik Daud Ahmad Khokhar

在Rails中访问模型属性

  •  6
  • Malik Daud Ahmad Khokhar  · 技术社区  · 16 年前

    def show
     @user = User.find[:params[id]]
     #code to show in a view
    end
    

    6 回复  |  直到 16 年前
        1
  •  9
  •   Magnar    16 年前

    我会犹豫是否覆盖这些属性,而是像这样添加到模型中:

    def titled_name
        "#{title} #{name}"
    end
    

    但是,您可以像这样直接访问字段:

    def name
        "#{title} #{self[:name]}"
    end
    
        2
  •  5
  •   Steve Weet    16 年前

    您可以在模型中创建虚拟属性来表示这些结构。

    有一个 railscast 关于这个主题,但总的来说,你可以在你的模型中做这样的事情

    def full_name
      [first_name, last_name].join(' ')
    end
    
    def full_name=(name)
      split = name.split(' ', 2)
      self.first_name = split.first
      self.last_name = split.last
    end
    

    def branch_identifier=(value)
      write_attribute(:branch_identifier, value.gsub(/-/, '')) unless value.blank?
    end
    
        3
  •  0
  •   askegg    16 年前

    如果要访问直接存储在数据库中的数据,可以在视图中执行此操作:

    <%= @user.firstname %>
    <%= @user.gender %>
    

        4
  •  0
  •   Jamie Hale    16 年前

    def formatted_name
      "#{title} #{first_name} #{last_name}"
    end
    

    (再次编辑以将$替换为#……也许我应该删除这个,嗯?)

        5
  •  0
  •   DanSingerman    16 年前

    您可以按照建议轻松重载属性。

    即,如果name是用户数据库表中的一个字段,则可以执行以下操作:

    def name
      "#{title} #{read_attribute[:name]}"
    end
    

    read_attribute 函数将返回字段的数据库列值。

    http://api.rubyonrails.org/classes/ActiveRecord/Base.html (在“覆盖默认访问者”下)

        6
  •  -1
  •   penger    16 年前
    推荐文章