如何在RoR中为模型添加额外的临时参数?

时间:2012-05-14 11:02:02

标签: ruby-on-rails ruby ruby-on-rails-3

我有一个模型“类别”,其中包含字段:名称,主页。 接下来我想获得所有记录:

categories = Category.all

我想为每条记录添加一个额外的临时参数“url”。 所以我想要这个:

categories [0] .url =“http://example.com”

将类别[0] .url#=>放入http://example.com

那么如何添加临时附加参数? 提前谢谢!

4 个答案:

答案 0 :(得分:8)

如果“临时”是指不会持久化的对象实例属性,只需像普通的Ruby对象一样使用attr_accessor

答案 1 :(得分:6)

如果我理解正确,您希望Category对象在传递给视图进行渲染时具有非数据库属性?

您可以添加未存储在数据库中的属性,将其添加到app/models/category.rb

attr_accessor :url

答案 2 :(得分:5)

您可以在模型中添加常规attr_accessor

class Category < ActiveRecord::Base

  attr_accessor :url
  # other stuff

end

答案 3 :(得分:0)

我永远搜索了这个,我不确定为什么这个答案很难找到。它是临时的,不会在db中持久存在,也不会被添加到对象的实际类中......

这仅适用于向此对象添加属性:

@object[:new_attr] = value

所以在你的例子中......

@categories = Category.all
@categories.each do |cat|
    cat[:url] = "myUrl"
end