Rails 4多态关联和关注点

梅尔

我正在尝试将Evaluation模型添加到我的Rails 4应用中。

我制作了一个名为的模型evaluation.rb它具有:

class Evaluation < ActiveRecord::Base

  belongs_to :evaluator, :polymorphic => true
  belongs_to :evaluatable, :polymorphic => true

我也提出了担忧evaluator,并evaluatable为:

module Evaluator
    extend ActiveSupport::Concern

    included do 
        has_many :given_evaluations, as: :evaluator, dependent: :destroy, class_name: 'Evaluation'

    end
end

module Evaluatable
    extend ActiveSupport::Concern

    included do 
        has_many :received_evaluations, as: :evaluatable, dependent: :destroy, class_name: 'Evaluation'
    end
end

我已经在用户模型中包括了每个关注点:

class User < ActiveRecord::Base
   include Evaluator
   include Evaluatable

在我的显示页面上,我想显示特定用户的评估(从其他用户那里收到-他们是评估者)。

在我的节目中,我有:

<% Evaluation.find(params[:id]).evaluations.order('created_at DESC').each do |eval| %>
                                <div id="portfolioFiltering" class="masonry-wrapper row">
                                        <%= eval.remark %>
                                        <%= eval.personal_score %>
                                        <small><%= eval.created_at %></small>

在我的评估表中,我不确定如何指定评估的接收者。我已经完成了基本表单,但是我不清楚如何将其与应该接收评估的用户联系起来。

<%= simple_form_for(@evaluation) do |f| %>
  <%= f.error_notification %>

  <div class="form-inputs">
    <%= f.input :score, collection: 1..10, autofocus: true, :label => "How do you rate this experience (1 being did not meet expectations - 10 being met all expectations) ?" %>

    <%= f.input :remark, as: :text, :label => "Evaluate your project experience", :input_html => {:rows => 10}  %>

我的评估表具有:

    t.integer  "user_id"
    t.integer  "evaluatable_id"
    t.string   "evaluatable_type"
    t.integer  "overall_score"
    t.integer  "project_score"
    t.integer  "personal_score"
    t.text     "remark"
    t.boolean  "work_again?"
    t.boolean  "continue_project?"
    t.datetime "created_at",        null: false
    t.datetime "updated_at",        null: false
  end

  add_index "evaluations", ["evaluatable_type", "evaluatable_id"], name: "index_evaluations_on_evaluatable_type_and_evaluatable_id", unique: true, using: :btree

问题

如何设置显示页面以显示用户收到的评价?

如何调整表格,以便将用户ID指定为应接收评估的人?

马克·莱内兹(Marc Lainez)

如何设置显示页面以显示用户收到的评价?

您的模型问题应该可以帮助您。在您的UsersController#show操作中,只需添加以下内容即可解决问题:

@received_evaluations = @user.received_evaluations

然后,您可以在显示模板中使用它:

<% @received_evaluations.each do |evaluation| %>
  // render some view stuff
<% end %>

或使用集合渲染

注意:Evaluation.find(...)您当前在视图中应该将其放置在控制器操作中,将其留在视图中不是一个好习惯。

如何调整表格,以便将用户ID指定为应接收评估的人?

如果您确定了将充当用户的用户,则evaluatable可以在控制器操作或视图表单中进行设置,以防页面上有要评估的用户列表。

在控制器中:

@evaluation.evaluatable_id = user_to_evaluate.id
@evaluation.evaluatable_type = user_to_evaluate.class.to_s

或更简单的语句应该做同样的事情:

@evaluation.evaluatable = user_to_evaluate

同样,您应该能够以相同的方式设置评估器:

@evaluation.evaluator = user_that_evaluates

在视图中:

<% @users_to_evaluate.each do |user| %>
  <%= simple_form_for(Evaluation.new) do |f| %>
    <%= f.error_notification %>

    <div class="form-inputs">
      <%= f.input :score, collection: 1..10, autofocus: true, :label => "How do you rate this experience (1 being did not meet expectations - 10 being met all expectations) ?" %>
      <%= f.input :remark, as: :text, :label => "Evaluate your project experience", :input_html => {:rows => 10}  %>
      <%= f.hidden_field :evaluator_id, :value => current_user.id %>
      <%= f.hidden_field :evaluator_type, :value => current_user.class.to_s %>
      <%= f.hidden_field :evaluatable_id, :value => user.id %>
      <%= f.hidden_field :evaluatable_type, :value => user.class.to_s %>
    </div>
  <% end %>
<% end %>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Rails 4关注点:给类实例变量建模

来自分类Dev

Rails 4-使用关注点进行布线

来自分类Dev

如何创建一个带有参数的Rails 4关注点

来自分类Dev

是否可以在Rails之外使用关注点

来自分类Dev

如何在Rails中使用模型关注点

来自分类Dev

在Rails 3和命名空间模型中使用关注点时,仅包含类方法一次

来自分类Dev

Rails 4-多态关联-嵌套属性

来自分类Dev

Rails 4-Railscast#154多态关联

来自分类Dev

Ruby On Rails-在控制器中使用关注点

来自分类Dev

使用关注点覆盖Rails引擎模型,获取未初始化的常量Concerns :: Models

来自分类Dev

Rails:在控制器中包括关注点导致找不到动作“索引”

来自分类Dev

在设计Rails数据库架构时如何避免使用关注点?

来自分类Dev

Rails 5,关注点-他们可以引用数据库表吗?

来自分类Dev

Rails:如何从包含的关注点覆盖或私有化给定范围?

来自分类Dev

Rails多态关联参考

来自分类Dev

Rails:包含多态关联

来自分类Dev

Rails逆多态关联

来自分类Dev

Rails:多态关联

来自分类Dev

多态关联-Rails

来自分类Dev

映射到Rails路由关注点的控制器名称空间中的不一致

来自分类Dev

映射到Rails路由关注点的控制器名称空间中的不一致

来自分类Dev

Java,Netbeans和关注点分离

来自分类Dev

AngularJS和分析-分离关注点

来自分类Dev

Java,Netbeans和关注点分离

来自分类Dev

结合STI和多态与rails 4

来自分类Dev

具有相同模型的Ruby on Rails 4的多态关联

来自分类Dev

使用Rails 4以简单的形式设计多态关联嵌套属性

来自分类Dev

Rails 4:Amistad宝石打破了多态性关联

来自分类Dev

具有相同模型的Ruby on Rails 4的多态关联

Related 相关文章

热门标签

归档