2013-02-10 66 views
0

我正在嘗試在點擊時添加一個唯一條目,以便用戶可以接受他們已被邀請參加的活動。用戶應該只能點擊此鏈接一次。目前我有下面的代碼,這似乎是添加條目,但我不認爲它的最佳實踐,再加上獨特的ID似乎並沒有被工作壓力太大以及在點擊時添加唯一條目

HAML

   %li= link_to 'Add', availabilities_path(:availability => {:team_id => @event.team_id, :user_id => user, :event_id => @event.id, :unique_id => availability_unique_id(user,@event) }), :remote => true, :method => :post, :class => 'button tiny success' 

模型

validates :unique_id, :presence => true, :uniqueness => true 

獨特的方法

def availability_unique_id(player,schedule) 
    Base64.encode64("#{player.to_s}_#{schedule.id.to_s}_#{schedule.team.id.to_s}") 
    end 

,你可以從下面的查詢看到獨特的價值不被看出來

select * from availabilities where user_id = 41; 
id | available | user_id | team_id | event_id |   created_at   |   updated_at   |   unique_id    | comment 
----+-----------+---------+---------+----------+----------------------------+----------------------------+----------------------------------+--------- 
61 |   |  41 |   |   | 2012-11-04 13:48:22.794214 | 2012-11-04 13:48:22.794214 | NDFfNDNfMQ==     +| 
    |   |   |   |   |       |       |         | 
84 |   |  41 |  1 |  75 | 2013-02-09 14:03:29.792374 | 2013-02-09 14:03:29.792374 | IzxVc2VyOjB4YWY3NTMxND5fNzVfMQ==+| 
    |   |   |   |   |       |       |         | 
85 |   |  41 |  1 |  75 | 2013-02-09 14:06:04.131862 | 2013-02-09 14:06:04.131862 | IzxVc2VyOjB4YjJhODBiOD5fNzVfMQ==+| 
    |   |   |   |   |       |       |         | 
87 |   |  41 |  1 |  75 | 2013-02-09 14:07:31.77788 | 2013-02-09 14:07:31.77788 | IzxVc2VyOjB4YjBhYjdiMD5fNzVfMQ==+| 
    |   |   |   |   |       |       |         | 
+0

嗨保羅,我不明白你的意思。如果你仔細觀察,表格會顯示唯一的unique_id – jvnill 2013-02-10 02:21:32

+0

嗨是的,它顯示了它們,但它們並不是唯一的,我想通過在我的模型中使用唯一性來考慮它只允許使用一次該值,是不是這種情況?謝謝 – 2013-02-10 02:23:25

+0

對不起,我看到他們是獨一無二的,即時通訊試圖實現的比用戶,從一個事件只能出現在表中一次,什麼是最好的方法來實現這個 – 2013-02-10 02:25:02

回答

0

從註釋。以下驗證可確保您爲每個event_id都有一個獨特的user_id。如果需要,您可以添加多個範圍。

validates :user_id, uniqueness: { scope: :event_id } 
+0

與我如何做鏈接,是否有更好的方式來實現相同的結果,所以參數不能從路徑中查看? – 2013-02-10 04:32:56

+1

是的,您可以使用'button_to'來創建表單或手動創建一個將參數作爲隱藏值的表單。 – jvnill 2013-02-10 13:07:46

+0

jvnill,以及按鈕的工作方式,可以通過調用一個方法來更好地實現,所以我沒有太多的登錄視圖? – 2013-02-13 07:00:06

相關問題