2017-09-02 16 views
2

以下導入方法需要處理設定爲無語法,將條件進口CSV中的Rails

def self.import(file, unit_id, profit_center_column [...] 
    CSV.foreach(file.path, :col_sep => "\t", headers: true, skip_blanks: true) do |row| 
    begin 
    Asset.create(
     unit_id: unit_id, 
     profit_center_id: row[profit_center_column] unless profit_center_column.nil?, 
     [...] 

輸入變量在控制器啓動該方法定義

params[:profit_center_column] = @unit.profit_center_column 

其中@unit.profit_center_column = nil

我遇到了意想不到的syntax error, unexpected modifier_unless, expecting ')'在使用unless之前,我從來不需要使用括號,我希望在這裏使用逗號來明確地區分這些語句。語法越來越亂了?

Rails 4.2.4和Ruby 2.3.4正在使用中。

請注意,我也試過if語句,但導致加載隨機xxx_column信息。

回答

4

您正在向資產的構造函數傳遞一個條件。如果你需要照顧它,我建議首先初始化Asset以可靠不零值,之後使用setter方法其餘屬性:

asset = Asset.new(
    unit_id: unit_id, 
    .... 

asset.profit_center_id = row[profit_center_column] unless profit_center_column.nil? 
asset.save 
+1

是...'create'是'new'加上'save' ......專注於樹,而不是森林! – Jerome

+0

其實條件應該是'asset.profit_center_id = [...]' – Jerome