2012-04-12 3 views
1

사용자 모델과 포인트 모델이 있습니다. 사용자는 많은 포인트와 포인트를 사용자에게 속할 수 있습니다.두 모델을 기반으로 한 방법은 어디에 두어야합니까?

사용자는 점수를 얻고 이러한 모델에 대한 메소드를 어디에 두어야하는지 잘 모릅니다. 예를 들어, 사용자에게 포인트를 추가하는 "add_points"메소드가 필요합니다. 나는 그것이 사용자 모델에 있어야한다고 생각하지만 확실하지 않다.

나는 user1.add_points을 할 수 있어야합니다 (: earned_for, 양)

또는 그 라인을 따라 뭔가.

답변

2

, 당신은 아마도 has_many 관계의 create 방법에 접선보다 훨씬 더 많은 일을 할 수 없습니다 :

class User < ActiveRecord::Base 

    has_many :points 

    def add_point(reason, amount) 
    points.create({:earned_for => reason, :amount => amount}) 
    end 
end 

속기가 큰 유용 경우; 그렇지 않으면 관계에 정의 된 도우미 메서드 만 사용할 수 있습니다. 자세한 내용은 here을 참조하십시오. 지금까지 귀하의 사용자 has_many로 :

0
당신이 사용자 개체 점 개체로 이해가되지 않는 점 개체에 물건을 올려 놓는하는 add_points 방법을 가질 수

설명대로 내가 할 것

는 추상적 인 개념을 표현하기 위해이 있었다 사용자 개체 특정 사용자를 나타낼 것입니다. 당신이 사용자에게 방법을 추가 할 때

0

사실,이 경우에는 포인트를 추가하기위한 추가 방법을 필요로하지 않는 점은 당신이 사용자에 대한 포인트를 추가 할 수있는이 방법 :

@user.points.create earned_for: reason, amount: amount 
관련 문제