2011-09-28 30 views
13

Tôi có một mô hình Đại lý nhận các thuộc tính của nó từ bảng cơ sở dữ liệu bên dưới. Tuy nhiên đối với một hành động điều khiển cụ thể tôi muốn thêm một số thuộc tính 'tạm thời' vào bản ghi Đại lý trước khi chuyển chúng vào chế độ xem.Thêm các thông tin thêm thời gian chạy vào đối tượng activerecord

Điều này có khả thi không?

Trả lời

20

Có, bạn có thể mở rộng mô hình của mình khi đang di chuyển. Ví dụ:

# GET /agents 
# GET /agents.xml 
def index 
    @agents = Agent.all 

    # Here we modify the particular models in the @agents array. 

    @agents.each do |agent| 
    agent.class_eval do 
     attr_accessor :foo 
     attr_accessor :bar 
    end 
    end 

    # And then we can then use "foo" and "bar" as extra attributes 

    @agents.each do |agent| 
    agent.foo = 4 
    agent.bar = Time.now 
    end 

    respond_to do |format| 
    format.html # index.html.erb 
    format.xml { render :xml => @agents} 
    end 
end 

Trong đoạn mã trên, bạn có thể tham khảo foobar như bạn làm với các thuộc tính khác.

+0

Cảm ơn bạn đã trả lời. Tôi cuối cùng đã làm việc đó nhưng tôi hy vọng rằng điều này sẽ giúp đỡ người khác. Tốt để biết rằng mọi người vẫn đang đáp ứng. – nexar

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