如何创建ruby变量属性?

时间:2014-10-26 00:50:39

标签: ruby-on-rails ruby variables

我在铁轨上使用红宝石。

我需要一个变量@slideshow来获得属性@ slideshow.link,@ slideshow.name和@ slideshow.description

我有一个模型/表格GenPackage,其列有image_link,image_name,image_description

我可以用

@slideshow = GenPackage.all

但是这会给我一个带有@ slideshow.image_link,@ slideshow.image_name和@ slideshow.image_description

属性的变量

如何在没有“image _”的情况下命名属性?

2 个答案:

答案 0 :(得分:2)

如果您可以更改GenPackage,请使用alias_attribute

  

alias_attribute(new_name,old_name)

     

允许您为属性创建别名,包括getter,setter和query方法。

这样的事情:

class GenPackage < ActiveRecord::Base
  alias_attribute :link, :image_link
  alias_attribute :name, :image_name
  alias_attribute :description, :image_description
end

这样,您就可以在任何地方使用linknamedescription(getter,setter,query,forms,...)。

答案 1 :(得分:0)

尝试使用method_missing

class GenPackage
  def image_link
    puts 'image_link'
  end
  def image_name
    puts 'image_name'
  end
  def method_missing (method_name, *args, &block)
    send(('image_'+method_name.to_s).to_sym, *args, &block)
  end
end

g=GenPackage.new
g.link
#=> image_link
g.name
#=> image_name