2011-05-08 22 views
1

我期待能有一個ActiveRecord對象舉辦像這樣:如何在讀寫時將activerecord屬性從字符串轉換爲has_many關係?

 
class Job < ActiveRecord::Base 
has_many :lines 

    def value 
    ..concat lines together separated by \n 
    end 

    def value=(string) 
    lines = string.split("\n").collect do |value| 
     Line.new(:text =< value) 
    end 
    end 
end 

,並想從與指向在一個文本框中有一個:值屬性,能夠調用Job.create (form_data)並在行表中創建行。同樣,我希望文本框中填充來自值存取器的數據。有沒有簡單的方法來做到這一點?

回答

0

像你描述的,如果你這樣做只會工作:

在控制器:

@job = Job.find(params[:id]) 

鑑於:


form_for @job do |f| 
    f.label :value 
    f.textarea :value 
end 

,並在型號:


def value 
    lines.map(&:text).join("\n") 
end 

def value=(v) 
    lines.delete 
    v.split("\r?\n").each {|line| lines << Line.new(:text=>line)} 
end 
+0

這將在讀取上工作,但不在寫入上。 – 2011-05-10 21:44:35

+0

更新,增加了一個值=方法也應該保存。它不適用於你的情況,因爲行被認爲是一個局部變量。你可以用self.lines解決問題。 – Roman 2011-05-10 21:53:36

相關問題