2011-08-26 1 views
0

레일스 3 앱에서 사용자 프로필 has_many :todos을 사용하고 있습니다. 사용자는 :todos이라는 세 가지 카테고리가 있습니다. 두 개의 카테고리는 다른 페이지의 버튼을 클릭하면 추가되며, 상태 업데이트와 유사한 양식을 통해 추가 할 수 있습니다.해시 또는 배열 사용 여부에 대한 의견, 레일에서 새 요소 밀어 내기

에 가장을 설정하는 방법
  1. , 배열이나 해시를 사용하는 것이 특히 여부 :

    그래서 난에 대한 당신의 생각에 관심이 있어요. :todos을 모두 계산하고 개별 카테고리의 문자열 값을 나열하고 싶습니다.

  2. 상태 업데이트가 아닌 두 가지 범주로 푸시하는 가장 좋은 방법입니다. 푸시 버튼을 클릭 할 가능성이 가장 큽니다. 따라서 푸시가 클릭이나 기타 클릭으로 이어질 수 있습니다. UPDATE

: 그냥 확인 ...

프로파일 모델 :

has_many :todo, :through => :profiles_todos 
has_many :profiles_todos 

ProfilesTodos 모델 :

belongs_to :profile 
belongs_to :todo 

그리고 profiles_todos 마이그레이션 :

(in self.up) 
    t.string :category 
    t.integer :profile_id 
    t.integer :todo_id 

답변

1

필드 카테고리가있는 조인 모델 UsersTo-dos를 만드는 것이 좋습니다. string. 이렇게하면 할일을 데이터베이스에서 고유하게 만들 수 있고 여러 사용자간에 공유 할 수 있습니다. has_many :users_to-doshas_many :to-dos, :through => :users_to-dos과 함께 사용하여 @ user.to-dos에 할일 목록을 만들고 @ user.users_to-dos에 범주와 할 일 개체가있는 조인 개체 배열을 만듭니다. 그런 다음 푸시 방법을 사용하여 할 일에 추가하거나 새 users_to-dos 개체를 만들고 범주 및 할 일 참조를 추가 할 수 있습니다.

+0

(나는 프로그래밍/레일스에 익숙하지 않습니다.)하지만 새로운 객체를 만들고 범주를 추가하는 방법은 어떨까요? 나는 : 할일 (일반)과 : to-dos_groceries가 있다고 가정 해보십시오. 그냥 컨트롤러에 정의하고 @ users_to-dos_groceries로 만드시겠습니까? – tvalent2

+1

두 가지 모델을 갖고 싶지는 않습니다. 조인 테이블 모델을 사용하여 범주를 설정하십시오. 예를 들어,'add_grocery_item (item)'이라는 사용자에 대한 메소드가 있다고 가정하면 다음과 같이됩니다 :'self.users_to-dos.build : category => '식료품 점', : to-do_id => item.id' 데이터베이스에서 해당 사용자를 다시로드하면 새 할 일 항목이 생깁니다. 모든 식료품 점을 얻으려면 '@ user.users_to-dos.select {| users_to_do | users_to_do.category == '식료품 점'}. 각각은 | users_to_do | to_do = users_to_do.to-do # 코드 및 조작은 여기 끝 ' –

+1

죄송합니다. 의견에 이상하게 보입니다. 또한 여기서 확신 할 수는 없지만 변수 이름에 하이픈을 사용할 수는 없습니다. 그것이 당신을 위해 작동한다면, 괜찮아요.하지만 일을 지명하는 가장 좋은 연습 루비/레일 방법은 밑줄 (_) –