2012-03-30 35 views
5

Có cách nào để đặt col dưới dạng động hoặc chuyển đổi theo cách nào đó thành thuộc tính hợp lệ không? Nó hiện đang ném các lỗi: không xác định phương pháp 'col =' cho # ...Cách đặt thuộc tính động

def copy_stock_data_from_sandbox(cntrlr) 
    source_table = cntrlr.singularize.classify.constantize 
    dest_table = source_table.new 
    source_table.column_names.each do |col| 
    dest_table.col = xyz # <------ This is the line in question 
    end 
    dest_table.save 
end 

Ngoài ra, không chắc chắn nếu tiêu đề là chính xác, xin vui lòng đề nghị nếu 'thuộc tính năng động' là một thuật ngữ sai cho tình trạng này . Cảm ơn

Trả lời

11

Tôi tin rằng bạn đang tìm kiếm như sau:

dest_table.send(:"#{col}=", xyz) 
7

Bạn có thể thử

dest_table.write_attribute(col, xyz) 

HOẶC

dest_table[col] = xyz 

HOẶC

dest_table.send("#{col}=", xyz) 
+0

'write_attribute' là phương thức riêng tư –

Các vấn đề liên quan