2010-10-01 48 views
1

嘿傢伙,所以我有兩個模型在我的項目,研磨機和投票。如何爲軌道中的對象創建方法?

所以每個研磨機都有很多票,票是屬於研磨機的。

的投票表格有3列:grinder_id:整數,選擇:字符串和voter_ip:字符串

如何以及在哪裏可以讓我的磨牀的方法?我想能夠做點像

<% @grinders.each do |grinder| %> 
    <%= grinder.votes_up %> 
<% end %> 

我在哪裏定義這個?

def self.votes_up 
    grinder.votes.find(:all, :choice => "up").count 
end 

如果這是正確的做法,請糾正我,如果我錯了,請。

+3

我會推薦閱讀至少_some_排序Ruby教程的潛水之前進入軌道... – 2010-10-01 20:02:52

+1

@馬特,我已經閱讀教程紅寶石和書籍。 – Rickmasta 2010-10-01 20:12:19

回答

4

app/models/grinders.rb你應該寫

class Grinder < ActiveRecord::Base 
    def votes_up 
    count "choice = 'up'" 
    end 
end 
+0

我提供了一個替代方案。但該方法應該存在... – Peter 2010-10-01 20:01:12

+0

Hrm,這很奇怪,因爲那也行不通。 – Rickmasta 2010-10-01 20:04:38

+0

這是正確的代碼。您不能在數據庫中正確設置事物。爲了驗證這一點,用'grinder.count'選項替換'grinder.votes_up',選項='up'「',你也會在那裏看到失敗。 – Peter 2010-10-01 20:05:47