2013-02-10 3 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_ids가 표시됩니다. 자세히 보시려면 – jvnill

+0

안녕하세요 그렇습니다.하지만 고유하지는 않습니다. 내 모델에서 고유성을 사용하여 생각하면 그 값을 한 번만 사용하도록 허용 할 수 있습니다. 덕분에 –

+0

미안하지만, 내가보기에 그들이 유일한 것보다 더 달성하기 위해 노력하고 무엇보다, 테이블에서 한 번만 나타날 수있는 이벤트에서 사용자가이 –

답변

0

의견에서입니다. 아래 유효성 확인을 통해 각 event_id에 대해 고유 한 user_id이 있는지 확인합니다. 필요한 경우 여러 범위를 추가 할 수 있습니다.

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

어떻게 링크를하고 메신저, 그래서 더 나은 방법은 동일한 결과를 얻을 수 있도록 그냥 매개 변수가 경로에서 볼 수 없습니까? –

+1

네, 폼을 생성하거나 매개 변수를 숨겨진 값으로 수동으로 폼을 생성하는'button_to'를 사용할 수 있습니다. – jvnill

+0

jvnill, 어떻게 버튼이 작동하는지,이 더 나은보기 내에서 너무 많은 로그인 없으므로 메서드를 호출하여 얻을 수 있습니까? –