如何将字符串更改为方法或字段?

时间:2012-09-10 13:25:15

标签: ruby-on-rails

我想创建一个字符串成为属性:

Model:
    Author
    attr_accessible :book1, book2, book3 etc...

我想用较小的命令检索20本书

def do_something 
  self.book1     
  self.book2     
  self.book3     
  ....           
end              

这是我提出的解决方案,但是如何让字符串成为属性,以便我可以检索数据。

def do_something             
  count = 0                  
  10.times do                
    self."book#{count += 1}"  
  end                        
end                           

2 个答案:

答案 0 :(得分:1)

这将有效:

def do_something             
  count = 0                  
  10.times do                
    self.send("book#{count += 1}")  
  end                        
end     

同样试试这个,它更简单,也应该有效:self[:book1]self['book1']

这是奇怪的设计。请考虑改用书籍:

attr_accessible :books

...

self.books.each { |book| puts book }

self.books[0] # etc.

答案 1 :(得分:0)

您可以使用eval

10.times do
  eval("self.book#{count} = count}")
end