我在铁轨上使用红宝石。
我需要一个变量@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 _”的情况下命名属性?
答案 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
这样,您就可以在任何地方使用link
,name
和description
(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