2013-01-25 95 views
0

我在我的模型中有這個。
但是,模型被用作多態,我想有不同的條件。
如果我在控制器中執行此操作,該如何執行代碼?如何在控制器中執行此操作?

型號/ comment.rb

validates_length_of :body, 
        :within => 10..100, 
        :message => "must be between 10 to 100 characters" 

UPDATE:

我只想使用時,社區模型創建成comment模型評論此驗證的條件。 評論模型是多態的! 它有commentable_type和commentable_id

回答

4

不,你不能在控制器中做任何這樣的事情。 在您的模型中使用條件或將其放入社區模型中。

validates_length_of :body, 
        :within => 10..100, 
        :message => "must be between 10 to 100 characters", :if => "community?" 

    def community? 
    return self.commentable_type == "Community" 
    end 
+0

如果它是多態的,你可以這樣做嗎?超過2個模型正在訪問該模型。但是我只想在社區模型訪問時才能驗證。 – MKK

+0

因此,將此驗證放在您的社區模型上。 –

+0

正如我所提到的,這個模型是多態的。我已經對常規案例進行了驗證。但只有一個模型必須有不同的條件。這就是爲什麼我試圖在控制器 – MKK

0

你要做這個模型

+1

請檢查我的更新! – MKK

0

在模型中,

validates_length_of :body, 
        :when => [ :comment ], 
        :within => 10..100, 
        :message => "must be between 10 to 100 characters" 

,你可以使用:unless像(:unless => Community.new { |a| a.comment? }

link會幫助你瞭解並根據您的需求進行編輯。這只是一個idea來解決你的問題。