Rails 最佳实践控制器或模型

Rails Best practice Controller or Model

我正在尝试根据 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 实例变量?

如果您在 Employee 和 Feedback 之间有关系,您可以这样做

如果你有 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  

关于其他字段(客户端和位置 ID),您似乎有冗余数据。尽量将这些数据保存在一个地方。

已添加

在你的模型中你有 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