2015-07-15 2 views
0

Я пытаюсь реорганизовать свой код в соответствии с лучшей практикой Rails. Теперь я сталкиваюсь с проблемой, когда у меня есть две переменные экземпляра на контроллере, и я не могу переместить их в модель. Здесь мы:Rails Лучшая практика Контроллер или модель

feedbacks_controller.rb

def get_feedback 
    ... 
    @employee = Employee.find_by(:name) 
    if @employee.blank? 
    ... 
    else 
    @client_feedback = Feedback.new(:screen_name => @screen_name, :feedback => @feedback) 
    @client_feedback.employee_id = @employee.id 
    @client_feedback.client_id = @employee.client_id 
    @client_feedback.location_id = @employee.location_id 
    @client_feedback.save 

Согласно Rails Best practice Move Model Logic into the Model все задания внутри ELSE нужно перейти к модели, мои сомнения в том, как я начну переменную @employee экземпляра внутри модели?

+0

Вы не будете, вы будете проходить в пример. Хотя я могу создать метод фабрики/утилиты. –

ответ

1

Если у вас есть отношения между работником и обратной связи вы можете сделать что-то вроде этого

, если у вас есть HAS_ONE соотношению

@client_feedback = @employee.feedbacks.new(screen_name: @screen_name, feedback: @feedback) 
@client_feedkback.save 

, если у вас есть has_many отношение

@employee.feedbacks << Feedbacks.new(screen_name: @screen_name, feedback: @feedback) 
@employee.save 

О других поля (идентификаторы клиентов и местоположений), похоже, что у вас есть повторяющиеся данные. Попытайтесь сохранить эти данные в одном месте.

ДОБАВЛЕНО

В модели вы CLIENT_ID и LOCATION_ID, если вам действительно нужны на обратной модели вы можете сделать что-то вроде

@employee.feedback = Feedback.new(screen_name: @screen_name, feedback: @feedback, client_id : @employee.client_id, location_id:@employee.location_id) 
@employee.save 
+0

Я получил его, поэтому внутри на модели обратной связи, как вы предлагаете установить такие атрибуты? 'self.employee_id = @ employee_id' –

+0

employee_id вам не нужно, потому что рельсы будут сохранять его по отношению, а все остальные поля могут быть отправлены по новому методу (вам не нужно делать выделенные строки). –

+0

Хорошо, спасибо большое @HoracioBranciforte –

Смежные вопросы