Let's say we have reader on name in Table:
class Table
attr_reader :name
def initialize(name)
@name = name
@columns = {}
end
end
I'd encourage you to store these Table classes' objects in a list/array:
table_1 = Table.new("First")
table_2 = Table.new("Second")
table_3 = Table.new("Third")
tables = [table_1, table_2, table_3]
Which can then be used for finding it using find(as mentioned in one of the answers) or detect:
tables.detect { |t| t.name == "Second" } #=> table_2 object
If you'd like to go one more step ahead then we can have another class maintaining this array:
class TableList
attr_reader :tables
def initialize
@tables = tables
end
def add(table)
@tables << table
end
def find_by_name(name)
tables.detect{ |table| table.name == name }
end
end
Which can then be used as:
table_1 = Table.new("First")
table_2 = Table.new("Second")
table_3 = Table.new("Third")
table_list = TableList.new
table_list.add(table_1)
table_list.add(table_2)
table_list.add(table_3)
table_list.find_by_name('Second') #=> table_2 object