2015-03-31 2 views
0

У меня есть эти моделямСправочные данные от текущего владельца отношений с ActiveRecord

class ExerciseSolving < ActiveRecord::Base 
    belongs_to :exercise 

    attr_accessor :important_data 
end 

class Exercise < ActiveRecord::Base 
    has_many :exercise_solvings 

    def start 
     #1 
    end 
end 

Как я могу сослаться на текущий ExerciseSolving на # 1, когда я называю атрибуты, как это:

ExerciseSolving.first.exercise.start 

Мне нужно :important_data от текущей связи внутри описанной функции. Есть ли чистый путь к этому? Непосредственно передать пример ExerciseSolving на Exercise кажется мне грязным.

+1

просто захватить разрешающие '@exercise_solving = ExerciseSolving.first', а затем ссылаться на' exercise' позже. Помимо этого нам нужно немного подробнее о реализации, потому что вопрос не столь ясен в этой части. – engineersmnky

ответ

0

стараются придерживаться law of demeter и инкапсулировать поведение:

class ExerciseSolving < ActiveRecord::Base 
    belongs_to :exercise 

    attr_accessor :important_data 

    def start 
    exercise.solve(important_data) 
    end 
end 

class Exercise < ActiveRecord::Base 
    has_many :exercise_solvings 

    def solve(data) 
    [...] 
    end 
end 

@exercise_solving = ExerciseSolving.first 
@exercise_solving.start 
Смежные вопросы